首页 > Java > java教程 > 为什么 JDK 8 中取消了 PermGen?

为什么 JDK 8 中取消了 PermGen?

Susan Sarandon
发布: 2024-11-14 22:35:02
原创
712 人浏览过

Why Was PermGen Eliminated in JDK 8?

JDK 8 中 PermGen 消除:了解原因

Java Development Kit (JDK) 8 中,PermGen(永久代)的概念已被删除。在此版本中运行 Eclipse 时,用户可能会遇到一条警告消息,指示 MaxPermSize 选项被忽略。此删除是由与 PermGen 相关的几个缺点驱动的,包括:

  • 启动时大小固定,难以动态调整。
  • 内部热点类型作为 Java 对象,导致复杂性和低效率。
  • 在完全垃圾期间需要特殊的迭代器和元数据集合。
  • 并发释放类数据和 GC 暂停之外的限制。
  • 对依赖 PermGen 删除的未来优化的阻碍。

为了解决这些问题,引入元空间概念来取代 PermGen。元空间具有以下优点:

  • 符合 Java 语言规范将类生命周期与类加载器相匹配的属性。
  • 除特定场景外,利用线性分配并消除单独回收。
  • 减少垃圾收集开销并提高

元空间可以使用 -XX:MaxMetaspaceSize 和 -XX:MetaspaceSize 标志进行调整,允许管理员定义初始大小和最大限制。默认情况下,Metaspace 的大小不受限制,允许它在运行时根据应用程序需求动态调整。

PermGen 的删除和 Metaspace 的引入启用了 JDK 8 及更高版本中的其他优化和功能,例如应用程序级数据共享、年轻集合增强和元数据大小减小,最终提高 GC 性能和整体效率。

以上是为什么 JDK 8 中取消了 PermGen?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板