问题
最近参与的一个项目,用的是ant构建。很无奈,其实是我第二次用ant(第一次还是很久以前用来编译zookeeper源码的时候)。
在IDEA中配置好项目后,用idea右侧的ant插件编译时,编译失败,有以下错误信息:
在网上搜了几个解决方案,基本都说的是配置idea的堆大小。对我这次的问题没有用,下面是我的Idea的初始配置:
我将最大堆调从1024m修改为2g, ReservedCodeCacheSize从240m改为540m,然后把idea中项目编译分配的堆大小改为1400m都没有解决问题。
解决方案
上面的解决方案是不适用于这类问题的,用ant插件编译的时候,是单独启动了一个新的进程,即运行了个单独的jvm,内存不够和idea的配置应该是没有直接关系。
在我思索的过程,想到看下堆栈信息的时候,发现问题所在了。
使用jvisualvm可视化看一下就看见了(内存不足的时候进程很快就退出了,所以可视化可以一直盯着,看见进程启动的时候快速点击查看信息)。如下:
这样问题就很明显了,最大堆内存为128m,可能是因为这个工程有点大,导致内存不足,所以调整一下最大堆内存即可。
调整方法:
弹出属性设置框的时候,在属性设置框里修改最大堆内存(看情况稍为改大点就行,我直接改成512m了)
再编译下,ok,编译完成。