PermGen Space 和 Meta Space

2020-01-14  本文已影响0人  摸摸脸上的胡渣

JVM的实现规范中要求必须实现五个部分,分别是堆、栈、PC计数器、本地方法栈和方法区。
PermGen Space和Meta Space只不过是不同版本jdk堆方法区不同的实现方案。

PermGen Space译文为永久代,是HotSpot对JVM规范中方法区的一个具体实现,存活于jdk1.7之前,主要用来存储类信息、常量、静态数据、编译后代码等。
永久代存在于JVM内存,逻辑上是属于Heap的,但是为了做区分,也称为“非堆”。

而在jdk1.8以后,Meta space取代了永久代,成为了jdk最新的方法区实现(可能以后meta space也会被取代)。

有两个比较重要的改变
1.将常量等信息从永久代中分离,转移到了Heap中
2.不再属于JVM内存,而是占用机器的本地内存

参考:

Java8内存模型—永久代(PermGen)和元空间(Metaspace)

方法区的Class信息,又称为永久代,是否属于Java堆?

上一篇下一篇

猜你喜欢

热点阅读