我是靠谱客的博主 辛勤哈密瓜,这篇文章主要介绍JVM方法区、永久代与元空间的区别与联系,现在分享给大家,希望可以做个参考。

1、JVM内存模型

JVM内存模型

2、方法区

 方法区 是 JVM 的规范,所有虚拟机 必须遵守的。常见的JVM 虚拟机 Hotspot 、 JRockit(Oracle)、J9(IBM)。

3、永久代

 永久代(PermGen)是 JDK7及之前, HotSpot 虚拟机 对 方法区 的一个落地实现。

4、元空间

 JDK8 中, Hotspot 已经没有永久代(PermGen),取而代之是元空间(Metaspace)。
 元空间并不在虚拟机中,而是使用本地内存。
 默认情况下,元空间的大小仅受 本地内存 限制,但可以通过以下参数来指定元空间的大小:
 -XX:MetaspaceSize ,初始空间大小:达到该值就会触发垃圾收集进行类型卸载,同时GC会对该值进行调整:如果释放了大量的空间,就适当降低该值;如果释放了很少的空间,那么在不超过MaxMetaspaceSize时,适当提高该值。
 -XX:MaxMetaspaceSize,最大空间:默认是没有限制的。

5、为什么Hotspot要用元空间替代永久代

1)字符串存在永久代中,容易出现性能问题和内存溢出。

2)类及方法的信息等比较难确定其大小,因此对于永久代的大小指定比较困难,太小容易出现永久代溢出,太大则容易导致老年代溢出。

3)永久代会为 GC 带来不必要的复杂度,并且回收效率偏低。

4)Oracle 可能会将HotSpot 与 JRockit 合二为一。

原文链接:https://blog.csdn.net/xiaojin21cen/article/details/104267301

最后

以上就是辛勤哈密瓜最近收集整理的关于JVM方法区、永久代与元空间的区别与联系的全部内容,更多相关JVM方法区、永久代与元空间内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(176)

评论列表共有 0 条评论

立即
投稿
返回
顶部