jvm垃圾回收 -- ZGC

ZGC是从JDK11中引入的一种新的支持弹性伸缩和低延迟垃圾收集器,ZGC可以工作在KB~TB的内存之下,作为一种并发的垃圾收集器,ZGC保证应用延迟不会超过10毫秒(即便在堆内存很大的情况下),在JDK11中是以实验阶段的特性被发布出来的,到JDK13时,ZGC可以支持到16TB的堆内存,并且可以将未提交的内存归还给操作系统。


Z垃圾收集器(ZGC)是可伸缩的低延迟垃圾收集器。ZGC可以同时执行所有昂贵的工作,而不会将应用程序线程的执行停止超过10ms,这使得它适合于要求低延迟和/或使用非常大堆(数TB)的应用程序。

Z垃圾收集器可作为实验功能使用,并通过命令行选项启用 -XX:+UnlockExperimentalVMOptions -XX:+UseZGC。

设置堆大小
ZGC最重要的调整选项是设置最大堆大小(-Xmx)。由于ZGC是并发收集器,因此必须选择一个最大堆大小,以便:1)堆可以容纳您的应用程序的活动集,以及2)堆中有足够的空间以允许在GC处于运行状态时为分配提供服务运行。需要多少空间非常取决于分配率和应用程序的实时设置大小。通常,给ZGC的内存越多越好。但是同时,浪费内存是不可取的,因此,这全都在于在内存使用和GC需要运行的频率之间找到平衡。

设置并发GC线程数
您可能要看的第二个调整选项是设置并发GC线程数(-XX:ConcGCThreads)。ZGC具有启发式功能,可以自动选择此数字。这种启发式方法通常效果很好,但根据应用程序的特性,可能需要对其进行调整。此选项从根本上决定了应该给GC多少CPU时间。给它太多,GC将占用应用程序太多的CPU时间。给它太少,应用程序分配垃圾的速度可能比GC收集垃圾的速度快。

// Ref
HotSpot虚拟机垃圾收集优化指南

你可能感兴趣的:(编程基础)