주니트 테스트를 실행할 때만 힙 스페이스가 소진되는 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/681133

문제

Junit 테스트를 실행할 때는 항상이 오류가 발생하는 것 같습니다.

일식 OutofMemoryError : 힙 공간

약 150MB에서 jconsole 및 힙 메모리 피크로 일식을 모니터링했습니다. 힙 메모리를 1GB로 설정했습니다.

일식을 시작할 때 다음 주장을 사용하고 있습니다.

-vm "C:\Program Files\Java\jre1.5.0_08\bin\javaw.exe" -vmargs -Xmx1024M
-XX:MaxPermSize=128M -Dcom.sun.management.jmxremote.port=8999
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

이 문제의 원인이 무엇인지 아는 사람이 있습니까? 주니트 테스트를 실행할 때만 발생합니다.

도움이 되었습니까?

해결책

Junit 테스트는 Eclipse IDE와 다른 VM에서 실행됩니다. 따라서 메모리가 아닌 VM은 일식이 아닙니다.
테스트 실행 구성에서 테스트 VM의 설정을 변경할 수 있습니다.
실행 구성으로 이동 한 다음 인수하에 VM 인수를 설정할 수 있습니다.

다른 팁

@thijs wouters 응답에 이어 Eclipse 에서이 문제를 해결하기 위해 다음을 수행했습니다.

  • Junit (run> run configuration> junit> new)에서 새 실행 구성 추가
  • 인수 탭 내에서 VM 인수를 "-xms64m -xmx256m"으로 설정했습니다.

주니트 테스트에서 메모리 누출이있을 것입니다. 일반적인 gotcha는 이것입니다. Junit은 Testcase 클래스의 새로운 인스턴스를 만들 것입니다. 그것의 모든 테스트 방법 그리고 모든 인스턴스 변수는 주니트가 종료 될 때까지 주위에 보관됩니다. 즉, 50 개의 테스트 방법이있는 테스트 케이스 클래스와 setup () 메소드에서 1MB 객체 그래프로 초기화되는 인스턴스 변수가있는 경우 테스트 케이스 클래스에는 50MB 힙 공간이 필요합니다.

편집하다: 위에서 설명한 문제는 이전 버전의 Junit에만 존재하며 Junit 4에서 고정되었다고 생각합니다.

방금 주니트 런처에서 힙 크기를 자동으로 설정할 Eclipse 용 플러그인을 출시했습니다. 당신은 그것을 얻을 수 있습니다 http://code.google.com/p/junitlaunchfixer/ Eclipse Europa, Ganymede 및 Galileo와 함께 작동합니다.

나는 내 문제에 대한 해결책을 찾았다 - 그것은 다른 사람들에게 도움이 될 수있다;) 힙 크기를 늘릴 때 나는 프로그램이 아니라 일식 응용 프로그램의 힙 크기를 늘리고 있었다. 내 프로그램을 실행하기 전에 실행 명령.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top