원시 및 Java 힙

JVM은 두 개의 메모리 영역인 Java™ 힙과 원시 (또는 시스템) 힙을 유지보수합니다. 이러한 두 개 힙은 서로 다른 목적이 있으며 다른 메커니즘으로 유지보수됩니다.

Java힙에는 Java 오브젝트의 인스턴스가 포함되어 있으며 '힙' 이라고도 합니다. 가비지 콜렉션에 의해 유지보수되는 Java힙이며 명령행 힙 설정에 의해 변경되는 Java힙입니다. Java힙은 mmap 또는 shmat (대형 페이지 지원이 요청된 경우) 를 사용하여 할당됩니다. Java힙의 최대 크기는 최소 힙 크기 설정이 더 낮은 경우에도 JVM 시작 중에 하나의 연속 영역으로 사전 할당됩니다. 이렇게 할당하면 최소 힙 크기 설정에 의한 인위적 힙 크기 한계를 힙 확장에 대한 실제 힙 크기 한계로 옮길 수 있습니다. 자세한 정보는 J9 VM 참조메모리 관리 를 참조하십시오.

원시 또는 시스템 힙은 운영 체제의 기본 malloc및 자유 메커니즘을 사용하여 할당되며 특정 Java 오브젝트의 기본 구현에 사용됩니다. 예를 들면, 다음과 같습니다.
  • AWT 및 Swing에서 필요한 Motif 오브젝트
  • Java 클래스 라이브러리가 .zip 또는 .jar 파일과 같은 압축된 데이터를 읽거나 쓰는 데 필요한 메모리 공간인 데이터 압축 루틴의 버퍼입니다.
  • 애플리케이션 JNI 코드에 의한 malloc 할당
  • JIT(Just In Time) 컴파일러에서 생성하는 컴파일된 코드
  • Java 스레드에 맵핑할 스레드