当我使用Gradle插件启动Eclipse时,有时会突然产生数百个Java进程。它们看起来像这样:
26000 pts / 24 Sl 0:01 / usr / lib / jvm / default-java // bin / java -Dfile.encoding = utf-8 -Xmx512m -XX:MaxPermSize = 128m -XX:+ UseG1GC -Dorg。 gradle.appname = gradlew -classpath /[...]/gradle/wrapper/gradle-wrapper.jar org.gradle.wrapper.GradleWrapperMain [项目名称]:eclipseExternalBuild --configure-on-demand -Dorg.gradle.parallel =假
26230 pts / 24 Sl 0:04 /usr/lib/jvm/jdk1.7.0_51/bin/java -XX:MaxPermSize = 2048m -Xmx4096m -Dfile.encoding = UTF-8 -cp [...] / .gradle / wrapper / dists / gradle-1.8-all / 2kopnp0i5dq014k75fp36m3vd5 / gradle-1.8 / lib / gradle-launcher-1.8.jar org.gradle.launcher.daemon.bootstrap.GradleDaemon 1.8 [...] /。gradle / daemon 10800000 4d4119b1-c332-4714-b0cd-1e80bc6dd78f -XX:MaxPermSize = 2048m -Xmx4096m -Dfile.encoding = UTF-8
第一种流程看起来像Eclipse正在构建东西;在我的工作区中,每个项目似乎至少有一个(有时最多6个!!)进程。几分钟后它们就会消失,这是合理的。
令人讨厌的是,我不知道所有GradleDaemon
正在做什么。
Eclipse中启用了Gradle依赖关系管理。我在Ubuntu 14.04上使用Eclipse 4.4和Gradle 1.8。
我该如何解决这个问题?我的计算机开始没有响应时,我每隔几个小时就打电话给killall -9 java
。
答案 0 :(得分:1)
我不知道我是否可以为你解决问题,但至少我可以在这里为你提供一些指导。创建Eclipse启动后的第一组守护程序进程,以获取项目的模型以填充项目的类路径。如果他们快速死亡,他们可能会有一些短暂的超时。
对我来说,Process 26000看起来更像是一个命令行调用,而不是Eclipse插件启动的进程。 /usr/lib/jvm/default-java//bin/java
中的两个连续斜线对我来说似乎很奇怪。你有JAVA_HOME设置有斜杠吗?
如果你有很多进程同时运行,那么每个构建请求可能会启动一个新的3个小时超时(输出中的10800000毫秒参数)。您可以使用系统属性自定义超时,但最好找到Gradle没有重用已经运行的守护程序进程的原因。假设守护进程使用相同的JVM,同一组JVM args以及可能的其他约束,它应该这样做。 Gradle用户主目录中有日志,您可以检查是否有任何可疑消息。
此外,我还使用线程转储检查其中一些进程,以查看是否存在死锁/饥饿,从而阻止其正常处理。即如果他们没有完成他们的构建执行,他们将不会被重用于下一个构建请求,并且可能在超时后不会退出。