Java对象占内存大小分配的初步认识

文章链接来源:http://my.oschina.net/thinkerfan/blog/99658

以下是全文信息:

问题1? java的对象引用占用多少个字节? 
问题2? null值占几个字节,boolen值占几个字节? 
问题3?对象占用字节大小如何计算? 


如下结论都是基于32位系统下,参考资料: 
http://wenku.baidu.com/view/e5121f3043323968011c92e3.html 
问题一: 
一个引用占用4个字节 
问题二: 
null也占用4个字节,boolean值占用1个字节 
空对象占八个字节,对象的引用占四个字节 
即:Object o = null;//这里只声明了一个对象引用而已,占用四个字节。 
问题三: 
对象占用内存大小计算公式: 
对象占用字节数=基本的8字节+基本数据类型所占的(累加后对齐到8的倍数)+对象引用所占的 (累加后对齐到8的倍数) 


比如:Object o = new Object(); 
系统分配了12个字节,引用变量占用4个,纯Object对象占8个字节 


例1: 
class A{  
int a;  
char b;  
}  
执行A a = new A();语句时引用变量a指向的对象占用的字节数为: 
8+{(4(int)+2(char)=6)对齐到八的倍数为8} = 16 
实际这语句执行时还生成了一个引用变量a占用4个字节,即总共分配了20个字节。 


例2: 
class B{  
Integer a;  
long b;  
byte c;  
}  
执行B b = new B();语句时引用变量b指向的对象占用的字节数为: 
8+{(8(long)+1(byte))对齐到八的倍数为16}+{4(Integer对象的引用)对齐到八的倍数为8}=32 


例3: 
public class Integer{  
public int value;  
}  
执行Integer i = new Integer();语句时引用变量i指向的对象占用的字节数为: 
8+{4,对齐到八的倍数为8} = 16; 
同理: 
public class Byte{  
public byte value;  
}  
Byte b = new Byte();语句时引用变量b指向的对象占用的字节数为: 
8+{1,对齐到八的倍数为8} = 16; 


例4数组的内存分配 
后续在学习: 
参考网站: 
http://mercyblitz.iteye.com/blog/710998 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值