`

【Java 8 GC 调优】有哪些 GC

    博客分类:
  • Java
 
阅读更多

此节主要与 串行GC 相关。
 

3类 GC

Hotspot 有 3种 不同类型的 GC,每个 GC 都有不同的性能特征。

 

串行GC

串行GC 使用单线程执行所有垃圾回收工作。因为没有线程间通信开销,所以相对而言比较高效。
尽管它在多处理器机器上,对小数据集(上限100MB左右)的应用程序很有效,但它最适合单处理器的机器。因为它不能利用多处理器硬件的优势。
在某些硬件和操作系统上,串行GC 是默认选项。也可以通过 -XX:+UseSerialGC 显式启用。

 

并行GC(吞吐量GC)

并行GC 也称为 吞吐量GC。它以并行的方式执行 Minor GC,可以显著减少垃圾收集的开销。
它适用于 运行在多处理器或多线程硬件上的 中大型数据集 应用程序。
在某些硬件和操作系统上,并行GC 是默认选项。也可以通过 -XX:+UseParallelGC 显式启用。
 

并行压缩(compact)

“并行压缩” 这项特性使得 并行GC 能并行执行 Major GC。
如果没有“并行压缩”,那么将使用单线程执行 Major GC,这会显著限制可伸缩性。
如果指定了 -XX:+UseParallelGC,那么默认会启用“并行压缩”。可以通过 -XX:-UseParallelOldGC 关闭“并行压缩”特性。

 

并发GC(Mostly Concurrent GC)

并发GC(Mostly Concurrent Collector) 会并发执行大部分工作。
如,当应用程序仍在运行的时候,执行GC(与应用程序的“业务处理”是并发关系)。这样可以缩短 GC 的暂停时间
它是为 中大型数据集响应时间比总吞吐量更重要 的应用程序设计的。因为用于最小化暂停时间的技术 会降低应用程序的性能
HotSpot 提供了 2个 并发GC (《并发GC》)。可通过 -XX:+UseConcMarkSweepGC 启用 CMS,或 -XX:+UseG1GC 启用 G1

 

选择 GC

除非相当严格的暂停时间要求,否则 先运行应用程序 且允许 JVM 自行选择 GC。
如有必要,可以调整堆大小 以提高性能。
如果性能仍然无法满足目标,则使用以下准则作为选择 GC 的起点。
 

  • 如果应用程序的数据集较小(上限 100MB 左右),那么使用 串行GC(-XX:+UseSerialGC)。
  • 如果应用程序运行在单处理器上,且没有暂停时间的要求,那么可以让 JVM 自行选择GC,或指定 串行GC(-XX:+UseSerialGC)
  • 如果 应用程序的峰值性能 是第一优先级,且没有暂停时间的要求,或者可以接受1秒或更长时间的暂停,那么可以让 JVM 自行选择GC,或指定 并行GC (-XX:+UseParallelGC)。
  • 如果响应时间比总吞吐量更重要,且GC导致的暂停时间必须小于 1 秒,那么可以指定一个 并发GC(-XX:+UseConcMarkSweepGC 或 -XX:+UseG1GC)。

这些准则仅提供了选择GC的起点。因为性能取决于 堆的容量、存活数据量、处理器的数量和速度。暂停时间 对这些因素特别敏感,所以前面提到的 1秒 阈值只是近似值。在许多不同数据集与硬件的组合中,并行GC 的暂停时间会超过 1秒。相反,并发GC 只在部分组合中会暂停超过1秒。
 

如果上述建议的GC未达到性能要求,可先尝试调整堆大小。 如果性能仍然不足,再尝试其他GC:

  • 并发GC 减少暂停时间
  • 并行GC 提高总吞吐量(多处理器硬件上)

 

分享到:
评论

相关推荐

    JVM与GC调优课程视频

    JVM与GC调优课程视频 〖课程介绍〗: JVM与GC调优课程视频 〖课程目录〗: 1.笔记/ ├── 第1篇-字节码篇.png?x-oss-process=style/pnp8 ├── 第2篇-类的加载篇.png?x-oss-process=style/pnp8 ├── 第3篇-运行时...

    Java GC与性能调优

    Java GC与性能调优文档 作者:高飞

    JVM体系结构与GC调优

    JVM体系结构与GC调优,PPT,格式排版完美,图文并茂,一共46页

    Java_GC垃圾回收调优指南

    让你对java gc 的工作原理有更深的了解 谢谢下载

    JVM体系结构与GC调优.pdf

    jvm体系结构与GC调优,图文齐飞,方便理解,,非常适合入门的java工程师以及性能测试工程师阅读,欢迎大家下载

    JVM体系结构与GC调优.pptx

    JVM体系结构与GC调优

    后端JAVA虚拟机JVM调优必备工具

    IBM Thread and Monitor Dump Analyzer for Java专业JVM调优工具 一、使用方法 1.使用java -jar启动程序 2.找到需要分析的jvm进程 3.使用jstack [pid] > /tmp/sdapjvmlog.txt导出进程的详细日志 4.使用程序打开...

    【Java 8 GC 调优】Garbage-First(G1)

    它试图在实现高吞吐量的同时,高概率地满足 GC暂停时间 目标。整个堆操作,如 全局标记,与业务线程同时运行。这可以防止 中断的发生概率 与 堆或存活数据大小 成比例。 G1 通过几种技术实现了 高性能 和 暂停时间 ...

    大厂架构师-日均百万订单量的JVM优化与高级GC调优策略实战(5.8G)

    在课程内容上几乎不用过多的介绍,单是查阅目录就会发现非常的强悍,课程从思路和实际案例的角度出发,非常全面的像同学们诠释了JVM与GC调优的思路和策略,对实际企业级应用是有巨大的提升价值。 〖课程目录〗: (1)\...

    JavaGC调优基础.pdf

    ——学习参考资料:仅用于个人学习使用! 本代码仅作学习交流,切勿用于商业用途,否则后果自负。若涉及侵权,请联系,会尽快处理! 未进行详尽测试,请自行调试!

    用于测试jvm gc调优-share-jvm-gc.zip

    用于测试jvm gc调优-share-jvm-gc

    jvm-full-gc调优-jvm-full-gc.zip

    jvm-full-gc调优-jvm-full-gc

    JVM体系结构与GC调优PPT

    JVM体系结构与GC调优,内容涉及JVM的垃圾回收的各种策略和JVM的各种内存的结构的分配

    Java9中的GC调优基础

    在经过了几次跳票之后,Java9终于在原计划日期的...本文将主要讲解GC调优需要知道的一些基础知识,会涉及到一些GC的实现细节,但不会对实现细节做很全面的阐述,如果你看完本文之后,能对GC有一个大致的认识,那本文

    jvm和gc详解及调优

    java进阶必备书籍,高清版。带目录结构。方便阅读,书中内容讲的透彻

    GC调优(入门篇)

    可见,无论使用多少堆外内存,对JVM内存的使用终究是绕不过去,既然绕不过去...本文就将会介绍HBase应用场景下CMS GC策略的调优技巧,后续还会针对另一业界开始使用的GC策略-G1GC策略在HBase应用场景下进行调优介绍。

Global site tag (gtag.js) - Google Analytics