public class ReferenceCountingGC {
public Object instance = null;
private static final int _1MB = 1024 * 1024;
private byte[] bigSize = new byte[2 * _1MB];
public static void main(String[] args) {
ReferenceCountingGC objA = new ReferenceCountingGC();
ReferenceCountingGC objB = new ReferenceCountingGC();
objA.instance = objB;
objB.instance = objA;
objA = null;
objB = null;
System.gc();
}
}
VM options参数:-verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8
输出结果:
[GC (Allocation Failure) [PSYoungGen: 7411K->1009K(9216K)] 7411K->3917K(19456K), 0.0017692 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
[GC (System.gc()) [PSYoungGen: 3302K->993K(9216K)] 6211K->3949K(19456K), 0.0005495 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
[Full GC (System.gc()) [PSYoungGen: 993K->0K(9216K)] [ParOldGen: 2956K->1780K(10240K)] 3949K->1780K(19456K), [Metaspace: 3233K->3233K(1056768K)], 0.0043093 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
疑问:
有大神能解析下这里面所有的内存kb具体是代表什么吗?与代码或虚拟机参数有没有什么联系?
比如说7411k->1009k,
又有7411k->3917k;
这些东西都是怎么算出来的?7411k具体又和什么有联系呢?