JDK 7 JVM 中的 permgen 在哪里?
Where is permgen located in JDK 7 JVM?
我正在研究 JDK 7 个 JVM 运行时数据区。
我想比较 JDK 7 JVM 和 JDK 8 JVM。 JDK 7 JVM中有一些内存区,但我很困惑。
我正在寻找JDK 7 JVM Runtime Data Areas Architecture图片和博客中的文章,但所有文章说的都不一样。
- 堆(包括新生代,老年代)
- 方法区(位于JVM的什么位置?堆?非堆?本地内存?还是独立的?)
- 方法区运行时常量池
- 本机内存中的 JVM 堆栈
- 本机内存中的本机方法堆栈
- 本机内存中的 PC 寄存器
但我对 PermGen 在运行时数据区中的位置感到困惑。
有人告诉 PermGen 是方法区的一部分。
有人告诉 Method Area 是 PermGen 的一部分。
有人告诉 PermGen 是非堆 。
(那么PermGen位于Native Memory?那么Runtime Data Areas分为3个部分?(Heap, non-Heap(Method Area), Native Memory ))
有人说PermGen是Heap的一部分
什么是正确的?
如果简单区分Heap和Native内存,PermGen是Heap区域的一部分。方法区也是。
你所附的图片在这方面基本上是正确的。
在Hotspot-VM永久代(PermGen)is/was堆区之一
不过,它是一个与主内存堆分开的特殊堆space。
它不受 Java 选项(如 -Xmx 或 -Xms)的影响,并且有自己的限制和垃圾收集行为。因此,根据观点和上下文,也可以说是non-heap。
我正在研究 JDK 7 个 JVM 运行时数据区。
我想比较 JDK 7 JVM 和 JDK 8 JVM。 JDK 7 JVM中有一些内存区,但我很困惑。
我正在寻找JDK 7 JVM Runtime Data Areas Architecture图片和博客中的文章,但所有文章说的都不一样。
- 堆(包括新生代,老年代)
- 方法区(位于JVM的什么位置?堆?非堆?本地内存?还是独立的?)
- 方法区运行时常量池
- 本机内存中的 JVM 堆栈
- 本机内存中的本机方法堆栈
- 本机内存中的 PC 寄存器
但我对 PermGen 在运行时数据区中的位置感到困惑。
有人告诉 PermGen 是方法区的一部分。
有人告诉 Method Area 是 PermGen 的一部分。
有人告诉 PermGen 是非堆 。 (那么PermGen位于Native Memory?那么Runtime Data Areas分为3个部分?(Heap, non-Heap(Method Area), Native Memory ))
有人说PermGen是Heap的一部分
什么是正确的?
如果简单区分Heap和Native内存,PermGen是Heap区域的一部分。方法区也是。
你所附的图片在这方面基本上是正确的。
在Hotspot-VM永久代(PermGen)is/was堆区之一
不过,它是一个与主内存堆分开的特殊堆space。 它不受 Java 选项(如 -Xmx 或 -Xms)的影响,并且有自己的限制和垃圾收集行为。因此,根据观点和上下文,也可以说是non-heap。