Java 查询对象所占字节

本文介绍了一种使用JavaHotSpot虚拟机设置属性,并通过ObjectSizeCalculator工具类来计算Java对象内存占用的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

System.setProperty("java.vm.name","Java HotSpot(TM) ");
System.out.println(ObjectSizeCalculator.getObjectSize(对象));

Java中,可以使用Java中的反射机制来获取类型所占用字节数。具体步骤如下: 1. 导入java.lang.reflect包 ```java import java.lang.reflect.*; ``` 2. 创建要获取字节数的类型对象 ```java Class<?> clazz = Integer.class; ``` 3. 使用java.lang.reflect包中的Field类的getDeclaredFields()方法获取类中所有的属性 ```java Field[] fields = clazz.getDeclaredFields(); ``` 4. 遍历属性数组,使用java.lang.reflect包中的Field类的getType()方法获取属性类型 ```java for (Field field : fields) { Class<?> fieldType = field.getType(); // 计算类型所字节数 int byteCount = 0; if (fieldType == byte.class || fieldType == boolean.class) { byteCount = 1; } else if (fieldType == short.class || fieldType == char.class) { byteCount = 2; } else if (fieldType == int.class || fieldType == float.class) { byteCount = 4; } else if (fieldType == long.class || fieldType == double.class) { byteCount = 8; } System.out.println(fieldType.getName() + " 占用 " + byteCount + " 个字节"); } ``` 完整代码如下: ```java import java.lang.reflect.*; public class Main { public static void main(String[] args) { Class<?> clazz = Integer.class; Field[] fields = clazz.getDeclaredFields(); for (Field field : fields) { Class<?> fieldType = field.getType(); int byteCount = 0; if (fieldType == byte.class || fieldType == boolean.class) { byteCount = 1; } else if (fieldType == short.class || fieldType == char.class) { byteCount = 2; } else if (fieldType == int.class || fieldType == float.class) { byteCount = 4; } else if (fieldType == long.class || fieldType == double.class) { byteCount = 8; } System.out.println(fieldType.getName() + " 占用 " + byteCount + " 个字节"); } } } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值