java gc测试_jvm GC:垃圾回收的测试与分析

实验环境:

(1)Java版本以及模式:

java version "1.8.0_171"

Java(TM) SE Runtime Environment (build 1.8.0_171-b11)

Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

(2)垃圾回收器为Parrallel Scanvenge收集器 和 Parrallel Old收集器

(3)CPU:Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz

1、查看基础内存消耗

public classGCTest {public static voidmain(String[] args){}

}

//使用javac编译并执行java -verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8 GCTest

// 日志如下:

Heap

PSYoungGen total 9216K, used 1312K [0x00000000ff600000, 0x0000000100000000, 0x0000000100000000)

eden space 8192K, 16% used [0x00000000ff600000,0x00000000ff748228,0x00000000ffe00000)

from space 1024K, 0% used [0x00000000fff00000,0x00000000fff00000,0x0000000100000000)

to space 1024K, 0% used [0x00000000ffe00000,0x00000000ffe00000,0x00000000fff00000)

ParOldGen total 10240K, used 0K [0x00000000fec00000, 0x00000000ff600000, 0x00000000ff600000)

object space 10240K, 0% used [0x00000000fec00000,0x00000000fec00000,0x00000000ff600000)

Metaspace used 2538K, capacity 4486K, committed 4864K, reserved 1056768K

class space used 278K, capacity 386K, committed 512K, reserved 1048576K

分析日志可知:eden区基础消耗1312K的内存,其中新生代大小为9216K = 8192 + 1024 K,因为 to 区和 from 区只有其中一个能使用。我并不知道基础消耗到哪里去了?有知道的大神告诉我下。

注意:使用cmd命令行执行,基础内存消耗较低,原先使用idea执行基础内存消耗达到2M。

2、新创建的对象内存大于新生代剩余内存将直接分配到老年代

importsun.misc.Unsafe;importjava.lang.reflect.Field;public classGCTest {private staticUnsafe unsafe;static{try{

Field field= Unsafe.class.getDeclaredField("theUnsafe");

field.setAccessible(true);

unsafe= (Unsafe) field.get(null);

}catch(Exception e) {

e.printStackTrace();

}

}public static long addressOf(Object o) throwsException {

Object[] array= newObject[] { o };long baseOffset = unsafe.arrayBaseOffset(Object[].class);int addressSize =unsafe.addressSize();longobjectAddress;switch(addressSize) {case 4:

objectAddress=unsafe.getInt(array, baseOffset);break;case 8:

objectAddress=unsafe.getLong(array, baseOffset);break;default:throw new Error("unsupport

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值