JDK1.8默认的垃圾回收器

简介: JDK1.8默认的垃圾回收器

在我们曾经见到的很多书籍或者资料中,代表的都是Parallel Scavenge(新生代) + Serial Old(老年代)。这其实是没有及时更新造成的一个误导。

通过官方网站可以得到证实:

在 JDK 8 的官网有这样的说法:

链接:https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/collectors.html

Parallel compaction is enabled by default if the option -XX:+UseParallelGC has been specified. The option to turn it off is -XX:-UseParallelOldGC.

大致意思就是说-XX:+UseParallelGC 就会开始 Parallel 收集器除非手动关闭。

JDK 源码 commit 记录说到:

Server-class machine ergonomics was introduced in jdk5. If the machine upon which

the jvm is running is powerful enough (currently, at least 2 physical cores plus

at least 2gb of memory), the server jvm is invoked using the parallel scavenger

rather than the serial scavenger. Currently the old gen collector used is

serial mark-sweep-compact. Now that the parallel old gen collector is mature,

we should change to using it instead.

Issue Links

在 JDK 7U4 之前确实 UserParallelGC 用的就是 Serial,在这个版本之后 Parallel 已经很成熟了,所以直接替换了旧的收集器,所以 JDK 7u4 以后的 7 和 JDK 8 老年代默认使用的都是 Parallel 收集器,只是网上很多资料往往人云亦云,没有更新这个细节。

链接:https://bugs.openjdk.java.net/browse/JDK-6679764

http://hg.openjdk.java.net/jdk8u/jdk8u/hotspot/rev/24cae3e4cbaa

另外:

PS MarkSweep 只是回收器的别名,他可以指代 Serial Old 和 Parallel Old。

-XX:+UseParallelGC 和 -XX:+UseParallelOldGC 结果一样,都是用的 Parallel Old

参考文章:https://blog.csdn.net/weixin_43753797/article/details/106450040


相关文章
|
Java
JDK8默认垃圾回收器详解
JDK8默认垃圾回收器详解
511 0
|
安全 Java API
【Java炸裂更新】JDK 22:区域锚定引领G1垃圾回收革命,性能飙升新高度!
【9月更文挑战第6天】JDK 22的发布,标志着Java在性能优化和垃圾回收技术上的又一次重大突破。区域锚定技术的引入,不仅提升了G1垃圾收集器的效率,也为Java应用的性能提升注入了新的动力。随着Java生态的不断发展和完善,我们有理由相信,Java将继续在编程界保持其铁打英雄的地位,为开发者们带来更多惊喜和可能。 让我们共同期待,Java在JDK 22的引领下,开启一个全新的性能飙升时代!
298 17
|
算法 Java
JDK版本特性问题之想控制 G1 垃圾回收器的并行工作线程数量,如何解决
JDK版本特性问题之想控制 G1 垃圾回收器的并行工作线程数量,如何解决
|
监控 Java 开发者
JDK 9新特性深度解析:垃圾回收器的改进与优化
本文将深入探讨JDK 9中垃圾回收器的改进与优化。随着Java语言的不断发展,垃圾回收器作为内存管理的核心组件也经历了多次迭代和改进。JDK 9引入了新的垃圾回收器,旨在提高内存回收的效率和性能,降低垃圾回收的停顿时间。本文将详细介绍这些改进,以及如何在实际应用中利用这些改进来提高应用程序的性能和稳定性。
|
Java
JDK8默认垃圾回收器
JDK8默认垃圾回收器
1859 0
安装JDK18没有JRE环境的解决办法
安装JDK18没有JRE环境的解决办法
1464 141
|
8月前
|
存储 Ubuntu 安全
在Ubuntu 16.04上安装openjdk-6/7/8-jdk的步骤
在整个安装过程中,你可能需要管理员权限,因此你可能要使用 `sudo` 来获取必要的权限。记得做完每一个步骤后,都要检查输出,以确保没有发生错误,并且每项操作都成功完成。如果在安装过程中遇到问题,查看 `/var/log/` 下的日志文件对于问题的解决可能是有帮助的。
561 21
|
8月前
|
IDE Ubuntu Java
在Ubuntu18.04安装兼容JDK 8的Eclipse集成开发环境的指南。
完成以上步骤后,您将在Ubuntu 18.04系统上成功安装并配置了Eclipse IDE,它将与JDK 8兼容,可以开始进行Java开发工作。如果遇到任何问题,请确保每一步骤都正确执行,并检查是否所有路径都与您的具体情况相匹配。
353 11
|
10月前
|
Java 关系型数据库 MySQL
在Linux平台上进行JDK、Tomcat、MySQL的安装并部署后端项目
现在,你可以通过访问http://Your_IP:Tomcat_Port/Your_Project访问你的项目了。如果一切顺利,你将看到那绚烂的胜利之光照耀在你的项目之上!
515 41
|
7月前
|
Ubuntu Java Android开发
在Ubuntu 18.04上安装与JDK 8兼容的Eclipse版本的步骤。
安装过程结束后,您就可以开始使用Eclipse来开发您的Java项目了,并且确保它与JDK 8兼容无误。这个过程涉及的是一个基本的安装流程,针对使用Java 8的用户,Eclipse的其他配置和插件安装根据个人开发环境和需求来定制。
489 0