在工作当中,有时候我们会需要打印GC的相关信息来定位问题。该如何做呢?
先来看个示例,
public static void main(String[] args){
List list0 = new ArrayList<>();
long start0 = System.currentTimeMillis();
for (int i = 0; i
list0.add(i);
}
System.out.println("cost: " + (System.currentTimeMillis() - start0));
List list1 = new ArrayList<>();
long start1 = System.currentTimeMillis();
for (int i = 0; i
list1.add(i);
}
System.out.println("cost: " + (System.currentTimeMillis() - start1));
}
直接运行,结果如下,
cost: 135
cost: 85
你应该觉得奇怪,同样的往一个list插入100万条数据,为啥第一个耗时比较久?
这种时候,有经验的工程师应该能马上怀疑是GC的问题,我们可以通过在运行时添加JVM参数来打印程序运行时的GC情况。
-XX:+PrintGCDetails
如果是使用IDEA来运行,可以在 run confi