温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java怎么计算对象大小

发布时间:2020-05-29 21:04:51 来源:亿速云 阅读:348 作者:鸽子 栏目:编程语言

Java对象大小的计算方式
首先我们需要知道的是 Java 对象是包含三部分数据的: 
1.对象头 
2.实例数据 
3.对齐填充(可能没有,因为 java 中规定对象的起始地址必须是 8 bytes 的正数倍) 

对于普通对象而言,对象头中包括 mark word(8 bytes)、kclass(没有开启压缩的时候是 8 bytes,开启压缩了的话,就是 4 bytes),如果是数组类型的对象话,这里还有一个数组长度字段,4字节. 

在 JDK6 64位 23 update+ 之后都默认开启了指针压缩功能. 

现在验证 java 对象占几个字节. 

public class Person { 
    int age; 

我使用的是64位jdk1.8,按照理论分析,Person 对象应该占的字节数: 
8(mark word) + 4(kclass) + 4(实例数据) + 0(不需要对齐填充) = 16B. 

而通过 visualVM 工具查看的结果也是 16B. 

现在来分析下数组的内存占用情况. 

public class ObjectHeaderSizeTest { 
    public static void main(String[] args) { 
        Person[] person = new Person[4]; 
        System.out.println(person); 

        Thread.currentThread().suspend(); 
    } 

首先我们知道 Person 对象占 16B,那么 person 占用的字节数为: 
8 + 4 + 4 + 8 * 4 + 0 = 48B. 

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI