Trace跟踪和Java堆的参数配置

Trace跟踪和Java堆的参数配置

  1. Java内存分配的参数

    (功能、如何配、效果如何)

    Trace跟踪参数:

    1. 可以打印 GC 的简要信息: -Xlog:gc (看Convert GC Logging Flags to Xlog)
    2. 打印 GC 的详细信息:-Xlog:gc*
    3. 指定 GC log 的位置,以文件输出:-Xlog:gc:garbage-collection.log
    4. 每一次GC后,都打印堆信息:-Xlog:gc+heap=debug

GC日志格式

GC发生的时间,也就是JVM从启动以来经过的秒数

日志级别信息,和日志类型标记

GC识别号

GC类型和说明GC的原因

容量:GC前容量 -> GC 后容量(该区域总容量)

GC持续时间,单位秒。有的收集器会有更详细的描述,比如:user表示应用程序消耗的时间,sys表示系统内核消耗的时间,real表示操作从开始到结束的时间。

Java堆的参数

Xms:初始堆大小,默认物理内存的1/64

Xmx:最大堆大小,默认是物理内存的1/4

xmn:新生代大小,默认是整个堆的3/8

-XX:+HeapDumpOnOutOfMemoryError: OOM时导出堆到文件

-XX:+HeapDumpPath: 导出OOM的路径

使用MAT进行内存分析

(安装MAT插件进行分析)

堆、栈、元空间的参数配置

-XX:NewRatio: 老年代与新生代的比值

如果xms=xmx,且设置了xmn的情况下,该参数不用设置

-XX:SurvivorRatio: Eden区和Survivor区的大小比值,设置位8,则两个Survivor区与一个Eden区的比值为2:8,一个Survivor占整个新生的1/10

-XX:+HeapDumpOnOutOfMemoryError: OOM时导出堆到文件

-XX:+HeapDumpPath: 导出OOM的路径

-XX:OnOutOfMemoryError: 在OOm时,执行一个脚本

Java栈的参数:

-Xss:通常只有几百K,决定了函数调用的深度

(出现StackOverflowError,有很大可能是出现递归没有终止条件)

元空间的参数:

-XX:MetaspaceSize: 初始空间大小

-XX:MaxMetaspaceSize: 最大空间,默认 是没有限制的

-XX:MinMetaspaceFreeRatio: 在GC之后,最小的Metaspace剩余空间容量的百分比

重点是Java堆内存参数(如何配置、现象和作用)

---- The end of this article ----