JVM原理 | 永久代和元空间区别
发布日期:2022-02-21 17:40:19 浏览次数:55 分类:技术文章

本文共 438 字,大约阅读时间需要 1 分钟。

什么是永久代?

永久代存放JVM运行时使用的类,永久代同样包含了Java SE库的类和方法,永久代并不是Java堆内存的一部分。永久代的对象在Full GC时进行垃圾收集。

什么是元空间(MetaSpace)?

JDK1.8 以后,使用元空间替代了永久代, 用来存放大对象的;

二者最大区别:

在这里插入图片描述

  1. 元空间用的是本地内存
  2. 永久代用的是jvm内存

元空间优势:

解决了"java.lang.OutOfMemoryError: PermGen space "异常的出现

  1. 解决了空间不足的问题( 老年代中的字符串或者对象所占内存无法确定, 元空间内存取决于本地内存 ), 因为默认的类的元数据分配只受本地内存大小的限制,也就是说,本地内存剩余多少理论上metaspace就可以有多大,这解决了空间不足的问题,不过也不可能任其无限壮大,JVM默认在运行时会根据需要动态的设置其大小;

为什么会空间不足?

JVM内存有限, 而且永久代一般都是存储字符串常量池, 对象等大对象, 所以比较容易满

转载地址:https://blog.csdn.net/weixin_40597409/article/details/115260077 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:JVM原理 | 类加载过程
下一篇:JVM原理 | TLAB是什么

发表评论

最新留言

很好
[***.229.124.182]2024年04月26日 04时14分55秒