目录
JDK 8 中删除 PermGen:原因和影响
首页 Java java教程 为什么 JDK 8 中删除了 PermGen?这对 Java 开发人员有何影响?

为什么 JDK 8 中删除了 PermGen?这对 Java 开发人员有何影响?

Nov 15, 2024 am 04:53 AM

Why Was PermGen Removed in JDK 8 and What Are the Implications for Java Developers?

JDK 8 中删除 PermGen:原因和影响

JDK 8 中的 Java HotSpot 虚拟机取消了对 MaxPermSize 参数的支持,引起了开发人员的担忧。了解此决定背后的原因对于最大程度地减少任何潜在影响至关重要。

忽略 MaxPermSize 选项的原因

PermGen(永久代),JVM 内的内存空间,先前存储的静态数据和元数据。然而,有几个缺点导致它被删除:

  • 固定大小限制: PermGen 的静态大小使得有效调整变得困难。
  • 不透明和难以调试: 存储在 PermGen 中的热点类型是 Java 对象,这使得它们难以调试和解析问题。
  • 垃圾收集的复杂性:完整 GC 需要元数据迭代器和特殊处理,从而增加了复杂性。
  • 未来改进的限制: PermGen 限制阻碍了旨在增强 JVM 的改进

删除 PermGen 的后果

PermGen 的删除已将其替换为 Metaspace,一个具有鲜明特征的新空间:

  • 支持动态调整大小:元空间是动态的大小,无需显式调整。
  • 类加载器生命周期关联:元空间存储与类加载器关联的数据,匹配它们的生命周期。
  • 快速分配和最小回收:元空间线性分配,无需单独回收,优化
  • 优化垃圾收集:Metaspace 的设计消除了垃圾收集过程中的重定位和压缩,提高了整体 GC 效率。

调优 MetaSpace

虽然元空间默认是动态调整大小的,但可以使用-XX:MaxMetaspaceSize 标志来限制其最大大小。 -XX:MetaspaceSize 标志(如果指定)定义其初始大小。

结论

忽略 JDK 8 中的 MaxPermSize 选项是解决限制和启用的必要步骤未来的优化。 MetaSpace是PermGen的后继者,在灵活性、性能和GC效率方面具有显着优势,为Java应用程序提供了更具可扩展性和可靠性的平台。

以上是为什么 JDK 8 中删除了 PermGen?这对 Java 开发人员有何影响?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

2025年的前4个JavaScript框架:React,Angular,Vue,Svelte 2025年的前4个JavaScript框架:React,Angular,Vue,Svelte Mar 07, 2025 pm 06:09 PM

2025年的前4个JavaScript框架:React,Angular,Vue,Svelte

Java的类负载机制如何起作用,包括不同的类载荷及其委托模型? Java的类负载机制如何起作用,包括不同的类载荷及其委托模型? Mar 17, 2025 pm 05:35 PM

Java的类负载机制如何起作用,包括不同的类载荷及其委托模型?

如何将Maven或Gradle用于高级Java项目管理,构建自动化和依赖性解决方案? 如何将Maven或Gradle用于高级Java项目管理,构建自动化和依赖性解决方案? Mar 17, 2025 pm 05:46 PM

如何将Maven或Gradle用于高级Java项目管理,构建自动化和依赖性解决方案?

Node.js 20:关键性能提升和新功能 Node.js 20:关键性能提升和新功能 Mar 07, 2025 pm 06:12 PM

Node.js 20:关键性能提升和新功能

冰山:数据湖桌的未来 冰山:数据湖桌的未来 Mar 07, 2025 pm 06:31 PM

冰山:数据湖桌的未来

如何将JPA(Java持久性API)用于具有高级功能(例如缓存和懒惰加载)的对象相关映射? 如何将JPA(Java持久性API)用于具有高级功能(例如缓存和懒惰加载)的对象相关映射? Mar 17, 2025 pm 05:43 PM

如何将JPA(Java持久性API)用于具有高级功能(例如缓存和懒惰加载)的对象相关映射?

Spring Boot Snakeyaml 2.0 CVE-2022-1471问题已修复 Spring Boot Snakeyaml 2.0 CVE-2022-1471问题已修复 Mar 07, 2025 pm 05:52 PM

Spring Boot Snakeyaml 2.0 CVE-2022-1471问题已修复

如何在Java中实施功能编程技术? 如何在Java中实施功能编程技术? Mar 11, 2025 pm 05:51 PM

如何在Java中实施功能编程技术?

See all articles