一个Java对象占多大空间 ?

Object o = new Object();

在堆内存中生成一个Object对象,此时该对象有三部分组成:对象头,对象包含的变量数据(实例数据),字节对齐。

默认情况下,对象头占12个字节 = 8个字节的markword + 4个字节的类型指针。且对象的大小必定是8字节的倍数,猜测这可能是跟64位jdk有关,在32位上可能就变成4的倍数了。

这里需要引用一张马士兵老师上课的图:

可见对象头部分是固定不变的,变动的是对象所包含的实例数据部分,所以我们只需要测试不同的实例数据对对象大小的影响即可。

这里需要使用一个小工具,由openjdk提供的一个jar包 jol-core-0.10.jar

测试代码如下:

package com.fh.test;

import org.openjdk.jol.info.ClassLayout;

public class JavaTest {
	public static void main(String[] args) {
		// new一个A对象
		A o = new A();
		
		// 打印出A对象的内存空间大小
	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值