我是靠谱客的博主 辛勤哈密瓜,最近开发中收集的这篇文章主要介绍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方法区、永久代与元空间的区别与联系所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部