计算java对象的内存大小1。使用jdk8的原生API
使用这种jdk8方法时,自然不支持开放jdk,因此需要设置环境变量。
system . set property("Java . VM . name ","Java HotSpot TM ");system . out . println(objectsize calculator . getobjectsize(3L));结果如下:
2.借助org.apache.lucene工具类
当一个对象有多个属性,需要计算整个对象的大小时,可以使用org.apache.lucene工具类。
先介绍一下***ven坐标。
& lt依赖性& gt& ltgroupId & gtorg . Apache . Lucene </groupId >& ltartifactId & gtLucene-core </artifact id >& lt版本& gt4 . 0 . 0 </version >& lt/dependency >& lt依赖性& gt& ltgroupId & gtorg . Apache . commons </groupId >& ltartifactId & gtcommons-lang 3 </artifact id >& lt版本& gt3 . 12 . 0 </version >& lt/dependency >测试代码:
地图& ltString,String & gt***p = new HashMap & lt& gt();system . out . println("地图初始值为"+ramusageesti***tor . sizeof(***p));for(int I = 0;我& lt100;i++){ randomstringutils . rando***lphanumeric(100);***p . put(randomstringutils . rando***lphanumeric(10),randomstringutils . rando***lphanumeric(10));} system . out . println("地图尺寸100,数值为"+ramusageesti***tor . sizeof(***p));system . out . println("地图尺寸100,数值为"+ramusageesti***tor . hu***n sizeof(***p));结果如下:
3.借助jol工具类
如果需要检查一个对象的详细内存分布,可以使用jol工具类。但是,当对象中嵌入了其他对象时,只能在ClassLayout方法中计算该对象的内存大小。
先导入***ven坐标。
& lt依赖性& gt& ltgroupId & gtorg . open JDK . jol </groupId >& ltartifactId & gtjol-core </artifact id >& lt版本& gt0.9 & lt/version >& lt/dependency >测试代码:
system . out . println(class layout . parse instance(23L))。top printable());结果如下:
4.Java对象的内存分配
最后,要计算一个对象占用多少内存,需要事先知道java对象的布局。
原文链接:https://***.cnblogs.com/huaweiyun/p/1***16147.html
本文来自笑醉生梦投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/524102.html