JVM CMS GC 日志解读与分析
CMS 的 GC 日志解读
CMS 也可称为“并发标记清除垃圾收集器”。其设计目标是避免在老年代 GC 时出现长时间的卡顿。默认情况下,CMS 使用的并发线程数等于 CPU 内核数的 1/4。
通过以下选项来指定 CMS 垃圾收集器:
-XX:+UseConcMarkSweepGC
如果 CPU 资源受限,CMS 的吞吐量会比并行 GC 差一些。示例:
# 请注意命令行启动时没有换行,此处是方便大...Continue reading >>
CMS 也可称为“并发标记清除垃圾收集器”。其设计目标是避免在老年代 GC 时出现长时间的卡顿。默认情况下,CMS 使用的并发线程数等于 CPU 内核数的 1/4。
通过以下选项来指定 CMS 垃圾收集器:
-XX:+UseConcMarkSweepGC
如果 CPU 资源受限,CMS 的吞吐量会比并行 GC 差一些。示例:
# 请注意命令行启动时没有换行,此处是方便大...Continue reading >>
上一节 JVM GC 日志解读与分析(基础配置)讲述了 GC 日志相关的基础信息和配置。需要提醒的是,这些参数是基于 JDK 8 配置的。
在 JDK 9 之后的版本中,启动参数有一些变化,继续使用原来的参数配置可能会在启动时报错。不过也不用担心,如果碰到,一般都可以从错误提示中找到对应的处置措施和解决方案。
例如 JDK 11 版本中打印 info 级别 GC 日志的启动脚本:
# JDK&...Continue reading >>
通过具体示例来演示如何输出 GC 日志,并对输出的日志信息进行解读分析,从中提取有用的信息。
为了演示需要,我们先来编写一段简单的 Java 代码:
package demo.jvm0204; import java.util.Random; import java.util.concurrent.TimeUnit; import jav...Continue reading >>
MAT(Memory Analyzer Tools),MAT是一款非常强大的内存分析工具,在Eclipse中有相应的插件,同时也有单独的安装包。在进行内存分析时,只要获得了反映当前设备内存映像的hprof文件,通过MAT打开就可以直观地看到当前的内存信息。一般说来,这些内存信息包含:
所有的对象信息,包括对象实例、成员变量、存储于栈中的基本类型值和存储于堆中的其他对象的引用值。
所有的类...