方法區(PermGen)
- JDK1.8以前的HotSpot JVM有方法區,也叫永久代(permanent generation)。
- 方法區用於存放已被虛擬機加載的類信息、常量、靜態變量,即編譯器編譯後的代碼。
- 方法區是一片連續的堆空間,通過-XX:MaxPermSize來設定永久代最大可分配空間,當JVM加載的類信息容量超過了這個值,會報OOM:PermGen錯誤。
- 永久代的GC是和老年代(old generation)捆綁在一起的,無論誰滿了,都會觸發永久代和老年代的垃圾收集。
- JDK1.7開始了方法區的部分移除:符號引用(Symbols)移至native heap,字面量(interned strings)和靜態變量(class statics)移至java heap。
-
參考:https://www.jianshu.com/p/a6f19189ec62