문제

15-30 분마다 Netbeans는 "java.lang.OutOfMemoryError: PermGen space". Google에서 배운 내용에서 이것은 클래스 로더 누출 또는 메모리 누출과 관련이있는 것 같습니다.

불행히도 내가 찾은 모든 제안은 애플리케이션 서버와 관련이 있었으며 NetBeans에 적응할 수는 없습니다. (나는 그것이 같은 문제인지조차 확신하지 못한다)

내 응용 프로그램에서 문제입니까? 소스를 어떻게 찾을 수 있습니까?

도움이 되었습니까?

해결책

일정한 클래스 로딩 때문입니다.

Java는 기본적으로 수집되지 않은 쓰레기가 아닌 영구 힙에 클래스 바이트 코드와 모든 상수 (예 : 문자열 상수)를 저장합니다 (응용 프로그램의 수명 동안 클래스가 한 번만로드되기 때문에 대부분의 상황에서는 의미가 있습니다).

전체 수명 동안 종종 클래스를로드하는 응용 분야에서 :

  • 핫 재배치 중 웹 및 애플리케이션 서버;
  • IDE는 개발 된 응용 프로그램을 실행할 때 (NetBeans 또는 Eclipse에서 실행 버튼을 누를 때마다 응용 프로그램의 클래스를 새로드합니다);
  • 기타이 동작은 힙이 결국 가득 차기 때문에 부적절합니다.

이 오류를 방지하려면 영구 힙 쓰레기 수집을 켜야합니다.

나는 옵션을 사용합니다

-XX:MaxPermSize=256M
-XX:+CMSClassUnloadingEnabled
-XX:+CMSPermGenSweepingEnabled

(내 일식 3.4를 던져 버렸습니다. "java.lang.OutOfMemoryError: PermGen space"따라서 NetBeans 와도 작동해야합니다).

편집하다: NetBeans의 경우 해당 옵션을 다음과 같이 설정합니다.[Netbeans installation]\etc\netbeans.conf해당 옵션을 접두사해야합니다 -J 그리고 그것들을 추가하십시오 netbeans_default_options (의견을 참조하십시오 netbeans.conf 더 많은 정보를 원하시면).

다른 팁

NetBeans NetConf에 다음 인수를 추가하십시오 : -J -XX : MaxPermsize = 256m

이것 좀 봐 링크 Permsize의 크기를 설정하는 방법에 대해 아마도 이것은 코드의 문제가 아니므로 유일한 솔루션은 Permsize를 증가시키는 것입니다. 나는 당신이 JaxB와 함께 일할 때 이것이 자주 있다는 것을 알았습니다. 일반적으로 다른 많은 JAR 파일에 의존하는 많은 라이브러리를 사용하는 경우 Permgen 공간의 기본 크기는 충분하지 않을 수 있습니다.

자세한 내용은이 블로그 게시물을 참조하십시오. 클래스 로더 누출 그리고 끔찍한 "java.lang.outofmemoryerRor : permgen space"를 고치는 방법

웹 애플리케이션을 개발중인 경우 서버 VM 옵션을 사용하십시오.

-xmx512m -xms512m -xx : maxpermsize = 512m

도구/서버로 이동 // 플랫폼/VM 옵션 (NetBeans 7.4)

file /etc/netbeans.conf를 편집하여 NetBeans JVM의 시작 옵션을 변경할 수 있습니다. 웹 앱을 개발할 때 종종 이런 종류의 오류가 있고 자주 배포됩니다. 이 경우 Tomcat을 때때로 다시 시작합니다.

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