Java에서 'PermSize'는 무엇입니까?
Java Memory Management 의 문서 를 살펴 보았는데 이해할 수없는 PermSize를 발견했습니다. 문서에는 "JVM이 메타 데이터를 저장합니다"라고 저장되어 있지만 메타 데이터가 의미하는 바를 정확히 알 수는 없습니다. 나는 인터넷 검색을하고 어딘가에 가치 객체 (사용자 정의 객체)를 저장합니다.
거기에 어떤 종류의 물건이 저장되어 있습니까? 설명이있는 예가 좋습니다.
"영구 세대"에 대한 간략한 정의 :
"영구 생성은 클래스 개체 및 메서드 개체와 같은 VM 자체의 반사 데이터를 보유하는 데 사용됩니다. 이러한 반사 개체는 영구 생성에 직접 할당되며 다른 세대와 독립적으로 크기가 조정됩니다." [참조]
즉, 여기에서 클래스 정의가 이동합니다 ( OutOfMemoryError: PermGen space
애플리케이션이 많은 수의 클래스를로드하거나 재배포 할 때 메시지를받을 수있는 이유를 설명합니다 ).
참고 PermSize
받는 사람 추가입니다 -Xmx
JVM 옵션에 사용자가 설정 한 값. 그러나 MaxPermSize
JVM이 PermSize
지정된 양 까지 성장할 수 있습니다 . 처음에 VM MaxPermSize
이로드 될 때는 여전히 기본값 (32mb -client
및 64mb -server
)이되지만 실제로 필요할 때까지 해당 양을 차지하지 않습니다. 반면에 둘 다 PermSize
및 MaxPermSize
256MB 로 설정 하면 전체 힙이 -Xmx
설정에 추가로 256MB만큼 증가했음을 알 수 있습니다.
이 블로그 게시물 은 멋진 설명과 배경을 제공합니다. 기본적으로 "영구 생성"(PermSize에 의해 크기가 지정됨)은 JVM이 공간을 할당해야하지만 (일반적으로) 가비지 수집되지 않는 (따라서 "영구적") (+) 항목을 저장하는 데 사용됩니다. 이는 예를 들어로드 된 클래스 및 정적 필드를 의미합니다.
영구 생성에 대한 몇 가지 질문에 대답하는 Sun에서 직접 가비지 수집에 대한 FAQ 도 있습니다 . 마지막으로, 기술적 인 세부 사항이 많이 포함 된 블로그 게시물 이 있습니다.
(+) 실제로 영구 생성 부를 것이다 GCed 일 예 클래스 언로드시 클래스 객체가 제거 될 것이다. 그러나 영구 세대가 JVM에 도입되었을 때 일반적이지 않았으므로 이름이 붙여졌습니다.
영구 풀에는 애플리케이션 데이터가 아니라 VM에 필요한 모든 것이 포함됩니다. 일반적으로 인턴 된 문자열, 정의 된 클래스의 바이트 코드 및 기타 "귀하의 것이 아닌"데이터 조각이 포함됩니다.
로드 된 클래스 정의 및 메타 데이터를 저장하기위한 lace. 대규모 코드 기반 프로젝트가로드되면 Perm Gen 크기가 충분하지 않아 인기있는 Java.Lang.OutOfMemoryError : PermGen이 발생합니다.
참고 URL : https://stackoverflow.com/questions/1634216/what-is-permsize-in-java
'programing' 카테고리의 다른 글
다른 기능에 할당 된 여유 메모리? (0) | 2020.11.18 |
---|---|
MVC 5 작업 메서드 매개 변수로 JSON을받는 방법 (0) | 2020.11.18 |
float : left를 사용한 후 새 줄을 어떻게 얻습니까? (0) | 2020.11.17 |
자바 스크립트에서 선택된 텍스트 이벤트 트리거 (0) | 2020.11.17 |
SQL Server Management Studio에서 줄 바꿈하는 방법 (0) | 2020.11.17 |