Java 11 新垃圾回收器 ZGC
可伸缩、低延迟的垃圾回收器
GC 暂停时间不超过 10ms
堆管理容量范围(小M级别,大到T级别)
对应用吞吐量影响不超过15%(对比 G1)
为进一步的添加新特性和优化做基础
默认支持 Linux/x64 系统
一、 启用Linux Large Pages
ZGC 启用Large Pages 是一种对应用高性能的折中(吞吐量、低延迟及启动时间),但是却不会带来明显的弊端。除了在应用启动上需要稍微复杂的配置,所需要的系统相关root权限需要手动进行配置。
Linux Large 在x86 linux平台也称为 huge pages,页大小为2M。
假设需要16G大小的JAVA 堆,则意味着需要 16G / 2M = 8192 huge pages。
首先需要分配至少16G(8192 huge pages)内存到 huge pages 内存池。 之所以说至少,是因为如果 JVM 启用了的 huge pages,那么不仅仅是GC,同时也包括JVM 的其它功能部分也会用到这部分内存(code heap, marking bitmaps 等),因此在此我们分配 9216 pages (18G),保持有2G的额外内存供非堆分配使用。
1. 配置系统的 huge pages 内存池:
$ echo
9216
> /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
附注:系统在没有足够内存的情境下会导致这一命令执行失败;命令执行完成需要一定的时间,可以通过以下命令进行查看:
$ cat /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
9216
2. 挂载 hugetlbfs 文件系统,并分配JVM运行用户权限:
$ mkdir /hugepages
$ mount -t hugetlbfs -o uid=
123
nodev /hugepages
附注:对于内核大于等于4.4的linux系统,可以跳过此步骤。
3. JVM启动命令添加 -XX:+UseLargePages 配置:
$ java -XX:+UnlockExperimentalVMOptions -XX:+UseZGC -Xms16G -Xmx16G -XX:+UseLargePages ...
4. 如果挂载了多个 hugetlbfs 文件系统,则需要通过 -XX:ZPath 命令指定需要使用的 hugetlbfs 系统:
$ java -XX:+UnlockExperimentalVMOptions -XX:+UseZGC -Xms16G -Xmx16G -XX:+UseLargePages -XX:ZPath=/hugepages ...
附注:huge pages 内存池分配及 hugetlbfs 文件系统挂载是非持久化的,会因系统重启而丢失,因此需要用户一定的措施来处理此种情景。
二、启用 Transparent Huge Pages
... ...
三、启用 NUMA
ZGC默认支持 NUMA,会优先在NUMA-local 内存进行 JAVA 堆内存分配,但是在有CPU亲和性设置的情况下,JVM会自动禁用NUMA,如果需要显示的设置NUMA支持,可以通过配置以下选项:-XX:+UseNUMA
or -XX:-UseNUMA。
四、启用 GC 日志
启用命令:
-Xlog:<tag set>,[<tag set>, ...]:<log file>
帮助信息:
-Xlog:help
基本日志:
-Xlog:gc:gc.log
性能调试:
-Xlog:gc*:gc.log
gc* 代表所有有gc标志的日志。:gc.logd代表日志写入gc.log文件。
Java 11 新垃圾回收器 ZGC的更多相关文章
- 新一代垃圾回收器ZGC的探索与实践
ZGC(The Z Garbage Collector)是JDK 11中推出的一款低延迟垃圾回收器,它的设计目标包括: 停顿时间不超过10ms: 停顿时间不会随着堆的大小,或者活跃对象的大小而增加: ...
- Java 11 新特性介绍
Java 11 已于 2018 年 9 月 25 日正式发布,之前在Java 10 新特性介绍中介绍过,为了加快的版本迭代.跟进社区反馈,Java 的版本发布周期调整为每六个月一次——即每半年发布一个 ...
- Java 11 新功能来了!
关键时刻,第一时间送达! 目前 Oracle 已经发布了 Java Development Kit 10,下个版本 JDK 11 也即将发布.本文介绍 Java 11 的新功能. 根据Oracle新出 ...
- Java 11新功能抢先了解
目前 Oracle 已经发布了 Java Development Kit 10,下个版本 JDK 11 也即将发布.本文介绍 Java 11 的新功能. 根据Oracle新出台的每6个月发布一次Jav ...
- java面试一日一题:java中的垃圾回收器
问题:请讲下java中垃圾回收器有哪些? 分析:该问题主要考察hotspot虚拟机下实现的垃圾回收器 回答要点: 主要从以下几点去考虑, 1.垃圾回收器的种类 2.每种垃圾回收器的着重点是什么 前边的 ...
- 【整理】Java 11新特性总结
闲语 2018年9月25日,Java 11正式发布,与JDK 10不同,JDK 11将提供长期支持,还将作为Java平台的参考实现以及标准版(Java SE)11.Oracle直到2023年9月都会为 ...
- 最通俗易懂的 Java 11 新特性讲解
大多数开发者还是沉浸在 Java 8 中,而 Java 14 将要在 2020 年 3 月 17 日发布了,而我还在写着 Java 11 的新特性.Java 11 是 Java 8 之后的第一个 LT ...
- JAVA之G1垃圾回收器
概述 G1 GC,全称Garbage-First Garbage Collector,通过-XX:+UseG1GC参数来启用,作为体验版随着JDK 6u14版本面世,在JDK 7u4版本发行时被正式推 ...
- java 11 新的Epsilon垃圾收集器
A NoOp Garbage Collector JDK上对这个特性的描述是: 开发一个处理内存分配但不实现任何实际内存回收机制的GC, 一旦可用堆内存用完, JVM就会退出. 如果有System.g ...
随机推荐
- 洛谷 P4298: bzoj 1143: [CTSC2008]祭祀
题目传送门:洛谷 P4298. 题意简述: 给定一个 \(n\) 个点,\(m\) 条边的简单有向无环图(DAG),求出它的最长反链,并构造方案. 最长反链:一张有向无环图的最长反链为一个集合 \(S ...
- PHP0024:PHP 博客项目开发
- linux系统下apache服务的启动、停止、重启命令
本文章简单的介绍了关于linux下在利用命令来操作apache的基本操作如启动.停止.重启等操作,对入门者不错的选择.本文假设你的apahce安装目录为 usr local apache2,这些方法适 ...
- vim 进化 编码问题
" 解决菜单乱码 source $VIMRUNTIME/delmenu.vim source $VIMRUNTIME/menu.vim " 防止文件显示乱码 set fileenc ...
- 诱人的 react 视频教程-基础篇(14 个视频)
诱人的 react 视频教程-基础篇(14 个视频) 诱人的 react 视频教程 - 基础篇 #1 介绍「07:25」 诱人的 react 视频教程 - 基础篇 #2 create-react-ap ...
- navicate premium连接sqlserver时报08001错误的解决方法
---恢复内容开始--- navicate premium连接sqlserver时报08001错误的解决方法 1.自己一直使用navicate连接sqlserver,但是自从自己的电脑安装了sqlse ...
- ag.百家下三路怎么看,如何玩好百家了
\/Q同号3908914.百家作为风靡全球的一款游戏,这么多年长盛不衰,是世界各地玩家的心头所好,但是你真的知道怎么玩好百家吗?第一点呢就是心态问题,我个人认为心态好一切都好,光是心态就占了百分之五十 ...
- 3.3 Zabbix容器安装
课程资料:https://github.com/findsec-cn/zabbix 1. yum install docker-latest :安装最新的docker ,选择 y ,等待自 ...
- php趣题小记
题目一: $a = 'abc'; $a++; echo $a; // abd 题目二: function myfun($a){ echo $a+10; } $a = 10; echo "my ...
- laravel手动数组分页
laravel文档中已经有写如何自己使用分页类去分页了,但没有详细说明. 如果你想手动创建分页实例并且最终得到一个数组类型的结果,可以根据需求来创建 IlluminatePaginationPagin ...