문제

나는 Permgen이 무엇인지, 그것이 사용되는지, 왜 실패하는지, 그것을 증가시키는 방법 등을 알고 있습니다.

내가 모르는 것은 Permgen이 실제로 무엇을 의미하는지입니다. 영구 ... 세대 ... 뭔가?

Permgen이 실제로 무엇을 의미하는지 아는 사람이 있습니까?

도움이 되었습니까?

해결책

영구 세대. 세부 사항은 물론 구현에 따라 다릅니다.

간단히 말해서, 클래스 및 인턴 끈과 관련된 Java 객체가 포함되어 있습니다. 공유와 함께 Sun의 클라이언트 구현에서 classes.jsa 메모리는 약 절반 읽기 전용 및 절반 복사기로 초기 데이터를 형성하기 위해 맵핑됩니다.

단지 오래된 자바 물체는 임기 세대에 보관됩니다.

다른 팁

Permgen은 JVM에서로드 클래스를 보유하는 데 사용됩니다. 다음을 사용하여 증가시킬 수 있습니다.

-XX:MaxPermSize=384m

Sun JVM 또는 OpenJDK를 사용하는 경우

따라서 OutofMemoryException : Permgen을 얻는 경우 Permgen을 더 크게 만들거나 클래스 로더 문제가 발생할 수 있습니다.

영구 세대. Java를 참조하십시오 GC 튜닝 가이드 쓰레기 수집가에 대한 자세한 내용은.

원래 질문과 실제로 일치하는 것은 아니지만 누군가가 유용 할 수 있습니다. Permgen은 실제로 Java가 수업을 유지하는 데 사용한 기억의 영역입니다. 그래서 우리 중 많은 사람들이 Permgen에서 OOM을 만났습니다. 예를 들어 많은 수업이 있다면.

Java 8 이후, Permgen 영역은 Metaspace 영역으로 대체되었으며, 이는 기본적으로 더 효율적이며 기본적으로 무제한입니다 (또는 32 또는 64 비트 JVM 및 OS 가상 메모리 가용성에 따라 기본 메모리의 양에 의해 더 정확하게 제한됨). 그러나 예를 들어 해당 지역의 최대 한도를 지정하여 어떤면에서 조정할 수 있습니다. 더 유용한 정보를 찾을 수 있습니다 이 블로그 게시물.

Permgen은 영구 세대.

여기에 간단한 블러가 있습니다 DDJ에서

내가 올바르게 기억한다면, 세대의 쓰레기 수집가와 마찬가지로 세대는 세대를 나타냅니다 (젊은 물체를 중년 및 "영구적 인"대상과 다르게 취급). 지역의 원리는 최근에 생성 된 물체가 먼저 삭제 될 것이라고 제안합니다.

Permgen은 영구 생성을 나타냅니다. JVM 메모리 영역 중 하나입니다. MaxPermsize라는 플래그를 사용하여 고정 된 크기의 힙의 일부입니다.

왜 "permgen"이라는 이름은 무엇입니까?

이 Permgen은 Java의 초기 시절에 지명되었습니다. Permgen Mains는로드 된 클래스의 모든 메타 데이터를 유지합니다. 그러나 문제는 클래스가로드되면 JVM이 종료 될 때까지 JVM에 남아 있다는 것입니다. 그러니 Permgen이라는 이름은 그것을 선택합니다. 그러나 나중에 동적 클래스로드가 그림에 들어 왔지만 이름이 변경되지 않았습니다. 하지만 함께 Java 8, 그들은 또한 그 문제를 해결했습니다. 지금 페르마겐 이름이 바뀌 었습니다 Metaspace 동적 메모리 크기로.

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