Java 힙의 PERM Area
에서 가비지 수집이 발생합니까?Java의 PERM 영역
PERM 영역은 클래스, 메소드, 변수 등에 대한 메타 데이터를 저장하는 데 사용됩니다. 문자열 풀이 PERM 영역에서 생성되었으므로 가비지 수집이 여기 발생하지 않는다고 생각합니까?
Java 힙의 PERM Area
에서 가비지 수집이 발생합니까?Java의 PERM 영역
PERM 영역은 클래스, 메소드, 변수 등에 대한 메타 데이터를 저장하는 데 사용됩니다. 문자열 풀이 PERM 영역에서 생성되었으므로 가비지 수집이 여기 발생하지 않는다고 생각합니까?
각 배포마다 새 클래스 개체가 PermGen에 배치되어 점점 더 많은 공간을 차지합니다. PermGen 공간의 크기에 관계없이 충분한 배포가 필연적으로 두드러집니다. PermGen의 크기를 안정화시킬 수 있도록 조치를 취해야합니다. 이 정리를 처리하는 두 개의 JVM 플래그가 있습니다.
-XX:+CMSPermGenSweepingEnabled
이 설정에는 가비지 수집 실행의 PermGen이 포함됩니다. 기본적으로 PermGen 공간은 가비지 수집에 포함되지 않습니다 (따라서 경계없이 증가합니다).
-XX:+CMSClassUnloadingEnabled
이 설정은 클래스 개체에 대한 조치를 취할 수 PermGen 가비지 컬렉션 스윕을 알려줍니다. 기본적으로 클래스 개체는 Garabage 컬렉션 중에 PermGen 공간을 방문하는 경우에도 면제를받습니다.
이론적으로 클래스 로더가 가비지 수집되면 해당 클래스 로더에 의해로드 된 클래스가 가비지 수집 될 수 있다고 생각합니다. 이 클래스는 영구 생성됩니다.
중복 된 http://stackoverflow.com/questions/3796427/in-java-does-permamnent-generation-space-garbage-collected – CoolBeans
좋은 질문 - 부모 클래스 로더가 수집 할 수있는 객체를 수집 할 수 있다고 가정합니다. 버려지지만 조금 추측하고 있기 때문에 '답변'으로 게시하지 않습니다. –
@Steve B - 힙의 다른 요소와 같습니다. 따라서 결국에는 가비지 수집됩니다. – CoolBeans