目录
  1. 1. 查看 GC 日志
    1. 1.1. 设置 vm 参数
    2. 1.2. 实例代码
    3. 1.3. GC 日志
    4. 1.4. 解读
深入理解JVM--查看GC日志

查看 GC 日志

设置 vm 参数

在Run/Debug configurations 的VM options文本框中输入:-XX:+PrintGCDateStamps -XX:+PrintGCDetails

实例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class GCTest {

public Object instance = null;

private static final int _1MB = 1024 *1024;

private byte[] bigSize = new byte[2 * _1MB];

public static void main(String[] args) {
GCTest objA = new GCTest();
GCTest objB = new GCTest();

objA.instance = objB;
objB.instance = objA;

objA=null;
objB=null;

System.gc();
}

}

GC 日志

image-20200216232050142

解读

  1. PSYoungGen:表示新生代,这个名称由收集器决定。PS是Parallel Scavenge收集器的缩写,新生代又分化 eden space、from space和to space这三部分
  2. ParOldGen:Parallel Scavenge收集器配套的老年代
  3. Metaspace: Parallel Scavenge收集器配套的永久代,JDK 1.8 移除了永久代,取而代之的是 Metaspace(元空间)
  4. total & used:总的空间和用掉的空间

第一行的 GC (System.gc())代表的这次 GC 是 Minor GC,原因是调用了 System.gc() 的方法。如果是因为新生代空间不足那么括号里应该为 Allocation Failure

[PSYoungGen 8032K ->808K (76288K)] 方块里面的表示 新生代是由 Parallel Scavenge 收集器收集的.

  • 8032 K:是指新生代回收前该内存使用容量
  • 808 K:是指新生代回收后该内存使用容量
  • 76288 K:是指新生代总的容量大小

在方块外边的就是 Java 堆了

Times:user是用户态耗费的时间,sys是内核态耗费的时间,real是整个过程实际花费的时间一般优化看的是 real 时间。

Full GC 就是 Major GC,即老年代 GC ,参数同理。

文章作者: Archiver
文章链接: https://www.kaiming66.com/2019/12/09/jvm/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3JVM--%E6%9F%A5%E7%9C%8BGC%E6%97%A5%E5%BF%97/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Archiver`s Blog
打赏
  • 微信
  • 支付寶

评论