Permgen - part of the heap or not?

I found an image from the oracle official site enter image description here

but in the popular SO answer I found that the constant generation is not part of the heap

Permanent generation (not a bunch): a pool containing all the reflective data of the virtual machine itself, such as a class and method objects. With Java virtual machines using class sharing, this generation is divided into read-only and read-write areas.

I messed up this conflicting data. I believe that in both places the data is valid, but with reservations. Please clarify this question for me.

PS

talk only about Sun / Oracle jvms.

PS2

jvm gcs (serial, parallel, cms g1), , , .

+4
3

, , Oracle, , " " , "" JVM; , , ) " " , , JVM , JIT , ...

Oracle

3 Oracle, , " " .

, , Java 2- - - , "", . " ", - .

enter image description here enter image description here

GC " ", , " " , . :

enter image description here

, 3.2 "", , " " .

, , GC "Tenured generation", JVM , " ", .

, Oracle

, , JVM. , JVM, , " " .

enter image description here

, , , ( ) JVM "", JVM " " , .

+2

Java 8 PermGen, MetaSpace , .

Java <= 7 PermGen, Java, , . 32 CompressOops, . .

, , PermGen/MetaSpace .

, ,

java.lang.OutOfMemoryError: Heap space space

, PermGen, .

java.lang.OutOfMemoryError: PermGen space

https://plumbr.eu/outofmemoryerror/java-heap-space

https://plumbr.eu/outofmemoryerror/permgen-space

https://plumbr.eu/outofmemoryerror/metaspace

+1

Permgen - Java 7 . Java 8 ( ). , :

  • hotshot jrockit
  • 'java.lang.OutOfMemoryError: PermGen' , -

Memory objects that have occurred in permgen have been placed in metaspace since Java 8. Metaspace resizes the memory area and is placed in a heap.

0
source

Source: https://habr.com/ru/post/1665085/


All Articles