PermGen이 무엇인지, 사용 용도, 실패 이유, 증가 방법 등을 알고 있습니다.
내가 모르는 것은 PermGen이 실제로 의미하는 바입니다. 영구 … Gen … 뭔가?
PermGen이 실제로 무엇을 의미하는지 아는 사람이 있습니까?
답변
영구 세대. 세부 사항은 물론 구현에 따라 다릅니다.
간단히 말해서, 클래스 및 인턴 문자열과 관련된 Java 객체를 포함합니다. 공유 기능을 사용하는 Sun의 클라이언트 구현에서는 classes.jsa
약 절반은 읽기 전용이고 절반은 쓰기시 복사로 초기 데이터를 형성하도록 메모리 매핑됩니다.
단순히 오래된 Java 객체는 Tenured Generation에 보관됩니다.
답변
PermGen은 JVM에서로드 된 클래스를 보유하는 데 사용됩니다. 다음을 사용하여 늘릴 수 있습니다.
-XX:MaxPermSize=384m
Sun JVM 또는 OpenJDK를 사용하는 경우.
따라서 OutOfMemoryException : PermGen이 발생하면 PermGen을 더 크게 만들어야하거나 클래스 로더 문제가있을 수 있습니다.
답변
영구 세대. 가비지 수집기에 대한 자세한 내용 은 Java GC 조정 가이드 를 참조하세요.
답변
원래 질문과 실제로 관련이 없지만 누군가가 유용하다고 생각할 수 있습니다. PermGen은 실제로 Java가 클래스를 유지하는 데 사용되는 메모리 영역입니다. 그래서 우리 중 많은 사람들이 예를 들어 많은 수업이 있다면 PermGen에서 OOM을 접했습니다.
Java 8 이후 PermGen 영역은보다 효율적이고 기본적으로 무제한 (또는 32 비트 또는 64 비트 jvm 및 OS 가상 메모리 가용성에 따라 기본 메모리 양에 따라 더 정확하게 제한됨) 인 MetaSpace 영역으로 대체되었습니다. 그러나 예를 들어 영역에 대한 최대 제한을 지정하는 등 몇 가지 방법으로 조정할 수 있습니다. 이 블로그 게시물 에서 더 유용한 정보를 찾을 수 있습니다 .
답변
답변
답변
내가 올바르게 기억한다면, Gen은 세대 별 가비지 수집기 (중년기 및 “영구”개체와는 다른 방식으로 젊은 개체를 처리)에서와 같이 세대를 나타냅니다. 지역성의 원칙에 따르면 최근에 생성 된 개체가 먼저 삭제됩니다.