>  기사  >  Java  >  JDK 8에서 PermGen이 제거된 이유는 무엇입니까?

JDK 8에서 PermGen이 제거된 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-14 22:35:02671검색

Why Was PermGen Eliminated in JDK 8?

JDK 8의 PermGen 제거: 이유 이해

JDK(Java Development Kit) 8에서는 PermGen(영구 세대) 개념 제거되었습니다. 이 버전에서 Eclipse를 실행할 때 MaxPermSize 옵션이 무시된다는 경고 메시지가 사용자에게 나타날 수 있습니다. 이러한 제거는 다음을 포함하여 PermGen과 관련된 몇 가지 단점으로 인해 발생했습니다.

  • 시작 시 크기가 고정되어 동적으로 조정하기가 어렵습니다.
  • 내부 핫스팟 유형이 Java 개체로, 이로 인해 복잡성이 발생합니다. 및 비효율성.
  • 전체 가비지 동안 특수 반복자와 메타데이터가 필요함
  • GC 일시 중지 외부에서 클래스 데이터를 동시에 할당 해제하는 데 제한이 있습니다.
  • PermGen 제거에 따른 향후 최적화에 지장을 줍니다.

이러한 문제를 해결하려면 PermGen을 대체하기 위해 Metaspace 개념이 도입되었습니다. 메타스페이스는 다음과 같은 장점을 제공합니다.

  • 클래스 수명을 클래스 로더에 일치시키는 Java 언어 사양의 속성에 부합합니다.
  • 선형 할당을 활용하고 특정 시나리오를 제외하고 개별 회수를 제거합니다.
  • 가비지 수집 오버헤드를 줄이고 개선합니다.

Metaspace는 -XX:MaxMetaspaceSize 및 -XX:MetaspaceSize 플래그를 사용하여 조정할 수 있으므로 관리자는 초기 크기와 최대 제한을 정의할 수 있습니다. 기본적으로 Metaspace는 크기가 무제한이므로 런타임 시 애플리케이션 요구에 따라 동적으로 조정할 수 있습니다.

PermGen이 제거되고 Metaspace가 도입되면서 JDK 8 이상에서 다음과 같은 다른 최적화 및 기능이 활성화되었습니다. 애플리케이션 클래스 데이터 공유, 젊은 컬렉션 향상 및 메타데이터 크기 감소를 통해 궁극적으로 GC 성능 및 전반적인 효율성이 향상됩니다.

위 내용은 JDK 8에서 PermGen이 제거된 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.