黑马程序员技术交流社区

标题: new一个Object对象占用多少内存? [打印本页]

作者: 吴飞飞    时间: 2015-4-2 22:04
标题: new一个Object对象占用多少内存?
new一个Object对象占用多少内存?

作者: minliang    时间: 2015-4-3 08:33
额,这个问题还真的不知道呢,貌似一般不考虑这个问题,只要知道他开辟堆内存就行了
作者: 懒的呼吸    时间: 2015-4-3 08:59
坐等回答!长知识!
作者: zmhlnrs    时间: 2015-4-3 14:48
在Java中,一个空Object对象的大小是8byte,这个大小只是保存堆中一个没有任何属性的对象的大小。看下面语句:

Object ob = new Object();
这样在程序中完成了一个Java对象的生命,但是它所占的空间为:4byte+8byte。4byte是上面部分所说的Java栈中保存引用的所需要的空间。而那8byte则是Java堆中对象的信息。因为所有的Java非基本类型的对象都需要默认继承Object对象,因此不论什么样的Java对象,其大小都必须是大于8byte。

有了Object对象的大小,我们就可以计算其他对象的大小了。

Class NewObject {  
int count;  
boolean flag;  
Object ob;  
}
其大小为:空对象大小(8byte)+int大小(4byte)+Boolean大小(1byte)+空Object引用的大小(4byte)=17byte。但是因为Java在对对象内存分配时都是以8的整数倍来分,因此大于17byte的最接近8的整数倍的是24,因此此对象的大小为24byte。






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2