java对象占用内存大小

字符串:

@Test
    public void test4(){
        String arr = ",1,12,123,1234,12345,123456,1234567,12345678,123456789,1234567890";
        arr += ",12345678901,123456789012,1234567890123,12345678901234,123456789012345,1234567890123456,12345678901234567,123456789012345678,1234567890123456789,12345678901234567890";
        arr += ",中,中国,中国人,中国人民,中国人民的,最高人民法院,中华人民共和国,中国人民共和国作,中国人民共和国作者";
        for(String str : arr.split(",")){
            long size = RamUsageEstimator.sizeOf(str);
            logger.debug(str+", 字节大小: "+size);
        }
    }


, 字节大小: 40(空字符串)

1, 字节大小: 48
12, 字节大小: 48
123, 字节大小: 48
1234, 字节大小: 48

12345, 字节大小: 56
123456, 字节大小: 56
1234567, 字节大小: 56
12345678, 字节大小: 56

123456789, 字节大小: 64
1234567890, 字节大小: 64
12345678901, 字节大小: 64
123456789012, 字节大小: 64

1234567890123, 字节大小: 72
12345678901234, 字节大小: 72
123456789012345, 字节大小: 72
1234567890123456, 字节大小: 72

12345678901234567, 字节大小: 80
123456789012345678, 字节大小: 80
1234567890123456789, 字节大小: 80
12345678901234567890, 字节大小: 80

中, 字节大小: 48
中国, 字节大小: 48
中国人, 字节大小: 48
中国人民, 字节大小: 48

中国人民的, 字节大小: 56
最高人民法院, 字节大小: 56
中华人民共和国, 字节大小: 56
中国人民共和国作, 字节大小: 56

中国人民共和国作者, 字节大小: 64

int:

@Test
    public void test5() {
        String arr = "0,1,12,123,1234,12345,123456,1234567,12345678,123456789,1234567890";
        arr += ",12345678901,123456789012,1234567890123,12345678901234,123456789012345";
        arr += ",1234567890123456,12345678901234567,123456789012345678,1234567890123456789,12345678901234567890";
        for (String str : arr.split(",")) {
            int num = Integer.parseInt(str);
            long size = RamUsageEstimator.sizeOf(num);
            logger.debug(str + ", 字节大小: " + size);
        }
    }

 

0, 字节大小: 16
1, 字节大小: 16
12, 字节大小: 16
123, 字节大小: 16
1234, 字节大小: 16
12345, 字节大小: 16
123456, 字节大小: 16
1234567, 字节大小: 16
12345678, 字节大小: 16
123456789, 字节大小: 16
1234567890, 字节大小: 16

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java对象数组占用内存的计算方法和Java基本类型数组类似,但需要考虑每个对象占用内存大小Java对象占用内存大小包括对象头部信息和实例数据两部分。Java对象头部信息包括以下三个部分: 1. 标记字:用于标记该对象是否被回收,占用4个字节。 2. 类型指针:指向该对象所属的类,占用4个字节。 3. 实例数据长度:表示该对象实例数据所占用字节数,占用4个字节。 因此,Java对象头部信息的总大小为12个字节Java对象实例数据包括该对象的所有实例变量。实例变量的类型和数量不同,因此每个对象的实例数据大小也不同。 因此,Java对象数组占用内存大小等于数组头部信息的大小加上每个对象实例数据占用的大小之和乘以数组长度。 下面以Student对象数组为例,介绍Java对象数组内存大小的计算方法: ```java class Student { String name; int age; } Student[] students = new Student[10]; int size = 12 + (ObjectSizeCalculator.getObjectSize(new Student()) * students.length); ``` 上述代码中,`students`是一个长度为10的Student对象数组,`size`即为该数组占用内存大小,其中12为数组头部信息的大小,`ObjectSizeCalculator.getObjectSize(new Student())`为一个Student对象实例占用内存大小,乘以数组长度即为所有Student对象实例占用内存大小之和。 需要注意的是,上述方法只适用于对象没有任何引用类型成员变量的情况。对于对象数组中包含引用类型成员变量的情况,还需要考虑这些成员变量所占用内存大小

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值