JDK 8에서 PermGen 제거: VM 옵션이 무시되는 이유
소개
JDK 8 도입 영구 세대 제거를 포함하여 JVM(Java Virtual Machine) 아키텍처에 대한 중요한 변경 사항 (PermGen). 이 변경 사항은 Eclipse 및 기타 애플리케이션이 JVM과 상호 작용하는 방식에 영향을 미쳤습니다.
문제
JDK 8에서 Eclipse를 실행할 때 MaxPermSize가 다음과 같다는 경고 메시지가 나타날 수 있습니다. VM 옵션은 무시됩니다. 이 메시지는 이 매개변수를 삭제하는 이유에 대한 질문을 제기합니다.
MaxPermSize를 무시하는 이유
MaxPermSize VM 옵션을 무시하는 이유는 PermGen과 관련된 몇 가지 단점에서 비롯됩니다. 이전 JDK 버전:
-
고정 크기: PermGen은 시작 시 크기가 고정되어 있어 동적 클래스 로딩이 필요한 애플리케이션에 대한 메모리 할당을 최적화하기가 어렵습니다.
-
내부 핫스팟 유형: PermGen에 저장된 개체는 Java 개체였으며 가비지 전반에 걸친 지속성으로 인해 잠재적인 메모리 누수로 이어졌습니다. collections.
-
단순화된 컬렉션: 전체 가비지 수집 주기를 단순화하기 위해 PermGen을 제거하여 메타데이터에 대한 특수 반복자가 필요하지 않습니다.
-
동시 클래스 데이터 할당 해제: MetaSpace를 사용하면 GC 일시 중지 외부에서 클래스 데이터를 동시에 할당 해제할 수 있습니다.
-
향후 개선: PermGen을 제거하면 이전에는 제약 조건으로 인해 제한되었던 향후 JVM 개선 및 최적화를 위한 길이 열렸습니다.
메타공간 : 대체품
JDK 8에서는 PermGen이 여러 장점을 제공하는 Metaspace로 대체되었습니다.
-
클래스 로더 친화성: Metaspace는 특정 클래스 로더와 연결되어 클래스 수명이 해당 로더의 수명 주기와 일치하도록 보장합니다.
-
선형 할당: 메타스페이스는 선형 할당을 사용하여 메모리를 단순화합니다.
-
개별 회수 없음: 메타스페이스는 클래스 재정의 및 로딩 실패를 제외하고는 개별 회수를 수행하지 않으므로 오버헤드가 더욱 줄어듭니다.
-
GC 스캔이 없거나 압축: 가비지 수집 주기 동안 메타공간 개체를 검색하거나 압축하지 않으므로 성능이 향상됩니다.
-
최적화된 조정: -XX:MaxMetaspaceSize 및 -XX:MetaspaceSize 플래그를 사용하여 메타스페이스를 조정할 수 있으므로 보다 유연한 메모리 관리가 가능합니다.
결론
JDK 8에서 PermGen을 제거하면 Java 애플리케이션에 상당한 성능과 안정성 이점이 제공됩니다. MaxPermSize VM 옵션은 더 이상 관련이 없지만 Metaspace는 애플리케이션 메타데이터 처리를 위해 고도로 최적화되고 효율적인 솔루션을 제공합니다.
위 내용은 JDK 8에서 MaxPermSize VM 옵션이 무시되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!