2014-10-22 5 views
1

Gradle 플러그인을 사용하여 Eclipse를 시작하면 문자 그대로 수백 개의 Java 프로세스가 갑자기 생성됩니다. 그들은 다음과 같이 :수백 개의 프로세스를 생성하는 Eclipse Gradle 플러그인

26000 점/24 SL 0시 1분는/usr/lib 디렉토리/JVM/기본 - 자바 // 빈/자바 -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- 요구 -Dorg.gradle.parallel = false

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 : Max PermSize = 2048m -Xmx4096m -Dfile.encoding = UTF-8

첫 번째 종류의 프로세스는 Eclipse와 유사합니다. 내 작업 공간 내의 각 프로젝트마다 적어도 한 (때로는 최대 6!) 프로세스가있는 것 같습니다. 그들은 합리적인 몇 분 후에 사라집니다.

무엇이 성가신 것은 내가 GradleDaemon이 무엇을하고 있는지 전혀 모른다는 것입니다.

Eclipse 내에서 Gradle 종속성 관리를 사용할 수 있습니다. 우분투 14.04에서 Eclipse 4.4와 Gradle 1.8을 사용하고 있습니다.

어떻게 수정합니까? 내 컴퓨터가 응답하지 않을 때 기본적으로 몇 시간마다 killall -9 java로 전화를 걸고 있습니다.

답변

1

문제를 해결할 수 있을지 모르겠지만 적어도 여기에 대해서는 몇 가지 지침을 제공 할 수 있습니다. Eclipse 실행 후 첫 번째 세트의 디먼 프로세스는 프로젝트의 클래스 경로를 채우기 위해 프로젝트의 모델을 얻도록 작성됩니다. 그들이 빨리 죽는다면 시간이 얼마 남지 않을 것입니다.

프로세스 26000은 이클립스 플러그인이 시작한 프로세스보다 명령 줄 호출과 비슷합니다. /usr/lib/jvm/default-java//bin/java에서 두 개의 연속 된 슬래시가 이상하게 보입니다. JAVA_HOME 뒤에 슬래쉬가 설정되어 있습니까?

동시에 많은 프로세스가 실행중인 경우 각 빌드 요청은 3 시간 제한 (출력에서 10800000 밀리 매개 변수)으로 새 프로세스를 시작합니다. 시스템 속성을 사용하여 시간 제한을 사용자 정의 할 수 있지만 Gradle이 이미 실행중인 데몬 프로세스를 재사용하지 않는 이유를 찾는 것이 좋습니다. 그것은 데몬이 동일한 JVM, 동일한 JVM 인수 집합 및 기타 다른 제약 조건을 사용한다고 가정해야합니다. Gradle 사용자 홈 디렉토리에 의심스러운 메시지가 있는지 확인할 수있는 로그가 있습니다.

또한 이러한 프로세스 중 일부는 스레드 덤프를 사용하여 교착 상태/기아 상태가 정상적인 처리를 방해하는지 확인합니다. 나는. 그들이 빌드 실행을 끝내지 않으면 다음 빌드 요청을 위해 재사용되지 않으며 어쩌면 타임 아웃 후에 종료하지 않을 것입니다.

+0

각 Gradle 빌드에 대해 Eclipse 통합은 새 취소 토큰 Sorce를 생성하므로 새 취소 토큰을 만듭니다. gradle 빌드 프로세스에 대한 새로운 취소 토큰이 새로운 gradle 데몬 프로세스가 생성되었음을 의미합니까? – aboyko

+1

아니요, 데몬에 대한 연결을 검색/생성하는 코드는 취소 토큰에 대해 아무것도 모릅니다. – Radim

+0

해시'4d4119b1-c332-4714-b0cd-1e80bc6dd78f'가'[...] /. gradle/daemon 10800000 4d4119b1-c332-4714-b0cd-1e80bc6dd78f -XX : MaxPermSize = 2048m -Xmx4096m - Dfile.encoding = UTF-8'?그것은 아마도'GradleDaemon' 프로세스마다 다른 유일한 것이기 때문에 아마 디버깅에 도움이 될 것입니다. – jiangty

관련 문제