-XX:G1MixedGCCountTarget
-XX:G1ReservePercent
-XX:MaxTenuringThreshold
五、Shenandoah GC
JDK12开始引入了Shenandoah GC , 它的主要目标是使99.9%的停顿小于10ms , 这种算法与其它GC算法的主要区别是引入了一个Concurrent Evacuation的过程 , 在这一过程中 , JVM将对象集合从集合集复制到其它区别 。
它的JVM参数配置如下:
-XX:+UseShenandoahGC
六、Z GC
Z GC据说与Azul的Zing 中的C4 GC是完全等价的 , 这是一款性能比G1优秀的垃圾收集器 , 在JDK11中 , Z GC被以实验性的特性引入 , 在JDK15中正式投入使用 。 在JDK16发布后 , GC暂停时间已经缩小到1ms以内 , 并且时间复杂度为o(1)了 , 这也意味着GC停顿时间是一个固定值 , 不会受到堆内存大小的影响了 。
在Z GC中 , 为了更灵活高效的管理内存 , 使用了内存多重映射 , 把同一块儿物理内存映射为Marked0、Marked1、Remapped三个虚拟内存 。 当应用程序创建对象时 , 会在堆上申请一个虚拟地址 , 这时 ZGC 会为这个对象在 Marked0、Marked1 和 Remapped 这三个视图空间分别申请一个虚拟地址 , 这三个虚拟地址映射到同一个物理地址 。 Marked0、Marked1 和 Remapped 这三个虚拟内存作为 ZGC 的三个视图空间 , 在同一个时间点内只能有一个有效 。 ZGC 就是通过这三个视图空间的切换 , 来完成并发的垃圾回收 。
它的JVM参数配置如下:
-XX:+UseZGC
七、Epsilon GC
区别与其它GC , 与Z GC一起在JDK11中被引入的Epsilon GC是A NoOp Garbage Collector(没有操作的垃圾收集器) 。 JDK上对这个特性的描述是:开发一个处理内存分配但不实现任何实际内存回收机制的GC ,一旦可用堆内存用完 , JVM就会退出 。 也就是说 , 这是一个没有什么卵用的GC 。 它的作用主要在于进行性能测试 , 它可以有效的过滤掉GC对于性能的影响 , 因为它什么也不做 。 另外它也可以用于进行内存压力测试 , 看看多久程序会崩溃 , 用于检测自己的代码质量 。
它的JVM参数配置如下:
-XX:+UseEpsilonGC
【算法|JVM有几种垃圾回收(GC)算法,你知道吗?】
- 踩线|主播不“踩线” 直播才有未来
- 有人觉得中暑就是热出来的,吃一些退烧药就好了,这种做法 蚂蚁庄园今日答案6月28日
- 位于广东省阳江市的海陵岛自然资源丰富,景色优美,该岛没有 神奇海洋6月28日答案
- 社交|腾讯视频为IP编写「价值算法」
- 新书推荐 │ 大数据算法设计与分析
- 我国首个海洋油气装备投产!还有一批重大工程取得新进展→
- 你用过的头像都成了明星,林彦俊走红网络,只有她默默无闻
- 物体做曲线运动时法向加速度有可能为0吗?
- 土星环比恐龙还要年轻?这些宇宙冷知识很少有人知道
- 太阳系有两个“太阳”,科学家提出“太阳伴侣”假说,它终会回来
