导航:首页 > 编程语言 > java对象的长度

java对象的长度

发布时间:2024-09-07 13:47:37

① 怎么确定java对象的大小

普通对象的结构如下,按64位机器的长度计算
1. 对象头(_mark), 8个字节

2. Oop指针,如果是32G内存以下的,默认开启对象指针压缩,4个字节
3. 数据区
4.Padding(内存对齐),按照8的倍数对齐

数组对象结构是
1. 对象头(_mark), 8个字节

2. Oop指针,如果是32G内存以下的,默认开启对象指针压缩,4个字节
3. 数组长度,4个字节
4. 数据区

5. Padding(内存对齐),按照8的倍数对齐

清楚了对象在内存的基本布局后,咱们说两种计算Java对象大小的方法
1. 通过java.lang.instrument.Instrumentation的getObjectSize(obj)直接获取对象的大小

2. 通过sun.misc.Unsafe对象的objectFieldOffset(field)等方法结合反射来计算对象的大小

java.lang.instrument.Instrumentation.getObjectSize()的方式

先讲讲java.lang.instrument.Instrumentation.getObjectSize()的方式,这种方法得到的是Shallow Size,即遇到引用时,只计算引用的长度,不计算所引用的对象的实际大小。如果要计算所引用对象的实际大小,可以通过递归的方式去计算。
java.lang.instrument.Instrumentation的实例必须通过指定javaagent的方式才能获得,具体的步骤如下:
1. 定义一个类,提供一个premain方法: public static void premain(String agentArgs, Instrumentation instP)
2. 创建META-INF/MANIFEST.MF文件,内容是指定PreMain的类是哪个: Premain-Class: sizeof.ObjectShallowSize
3. 把这个类打成jar,然后用java -javaagent XXXX.jar XXX.main的方式执行

有兴趣可以看下博主的:http://blog.csdn.net/iter_zc/article/details/41822719

阅读全文

与java对象的长度相关的资料

热点内容
夜蒲聚会app是什么软件 浏览:639
任天堂如何区分服务器 浏览:818
云服务器的运用前景 浏览:547
解压视频素材哪里有 浏览:255
小米5android7 浏览:842
极品飞车10修改直接解压 浏览:640
简易算法怎么用 浏览:497
压缩比101用什么油 浏览:562
买白银下什么APP 浏览:842
服务器操作台如何操作 浏览:245
可编程安全继电器 浏览:989
兔牙喵喵喵解压文件密码 浏览:277
磁盘新建文件夹未响应 浏览:997
有什么录音app带混响 浏览:941
英语精读pdf 浏览:207
戒烟之后排解压力 浏览:908
视频网站如何选服务器 浏览:257
单片机中ramrom是什么颜色 浏览:40
dev编译完不显示控制台窗口 浏览:595
程序员自学有希望吗 浏览:528