java对象占用内存大小计算方式

本文通过案例展示了Java中创建用户对象对内存使用的影响,并详细分析了不同对象属性对内存消耗的具体贡献。

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

案例一:

User

public class User {
	
	
}

UserSizeTest

public class UserSizeTest {
	static final Runtime runTime=Runtime.getRuntime();
	public static void main(String[] args) {
		final int count = 100000;
		User[] us=new User[count];
		
		long heap1 = 0;
		
		for (int i = -1; i < count; ++i) {
			User user=null ;
			user=new User();
			if (i >= 0)
				us[i] = user;
			else {
				user = null; 
				heap1 = getUsedMemory(); 
			}
		}
		long heap2 = getUsedMemory();
		System.out.println("user大小:"+((float)heap2-heap1)/count+" bytes");
		for (int i = 0; i < count; i++) {
			us[i]=null;
		}
		runTime.gc();
	}
	static long getUsedMemory(){
		return runTime.totalMemory()-runTime.freeMemory();
	}
}

结果:

user大小:7.62576 bytes


说明:

空对象占用8个字节




案例二:

public class User {
	boolean flag;
	long id;
	Date date ;
	
}

运行测试类结果;

user大小:23.50192 bytes

说明:

boolean 1+ long 8 + 引用类型 Date 4 =13 凑齐8的倍数 =16
	
16+空对象 8 =24


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值