下面来通过gc日志分析堆内存。
堆又分为了新生代,年老代。下面主要通过一些参数配置,来来控制新生代,老年代,内存如何分配等问题。
首先我们来了解几个相关的参数:
- -XX:+PrintGCDetails:用于告诉虚拟机回收垃圾的时候顺便打印日志
- -Xloggc:路径 :将打印出来的日志信息保存至指定的路径
- -Xmn10M:设置新生代的内存大小
- -XX:SurvivorRatio=8:1调整Eden和Survivor的比例为8:1
执行如下的实例代码:
package test03;
import java.util.ArrayList;
import java.util.List;
/**
* 通过gc来分析堆内存
* 调用参数: -Xms20m -Xmx20m -Xmn10 -XX:+PrintGCDetails -Xloggc:d:\gc1.log
* @Package test03
* @Title: Demo.java
* @Company: $
* @author BurgessLee
* @date 2018年8月20日-下午8:40:01
* @Description: $
*/
public class Demo {
public static void main(String[] args) {
List<Object> list = new ArrayList<Object>();
while(true){
list.add(new Object());
}
}
}
在对应的d盘下,找到对应的gc的log日志文件。
图一是gc第一部分的具体解释
堆内存具体说明详见下图:
以上是对gc日志的相关解释。