Maven因为缺乏“#E; Process”退出代码137'而失败了。在日志中。
可能出现错误的原因是什么?可能是什么问题?
答案 0 :(得分:5)
进程被Linux OOM Killer杀死,因为您的计算机资源不足。
通过jvm默认Xmx为机器提供更多内存和/或交换或减少进程的内存占用量directly impacted,这很可能与jvm实际使用的内容相差甚远。
为其提供额外的java命令行选项
-Xmx256m -XX:MaxPermSize=512m
或配置系统变量
MAVEN_OPTS=-Xmx256m -XX:MaxPermSize=512m
MaxPermSize对java 8 +没有用处
答案 1 :(得分:3)
请注意,我最终发现问题是分配的内存太多,而不是太少。
在具有2GB内存并将最大堆大小设置为2GB的计算机上运行作业时,构建最终失败,状态为137.但是,当将作业设置为最大1GB(例如-Xmx1g -Xms512m
)时,构建成功了。
这种方式很有意义,因为JVM可以自由地将其内存增加到最大堆大小,但如果实际内存不足,操作系统将终止进程。但是,如果你减少最大堆大小,JVM不会试图增加它的内存,所以操作系统不会担心它足以杀死它。
此外,我正在使用GWT,它需要一个单独的编译过程,并且参数必须在extraJvmArgs
配置中指定为gwt-maven-plugin
元素,而不是MAVEN_OPTS
。