Java对象占内存大小分配的初步认识
来源:互联网 发布:doujinmode新域名 编辑:程序博客网 时间:2024/05/01 11:34
文章链接来源: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
- Java对象占内存大小分配的初步认识
- java对象占内存大小
- java对象占内存大小
- java对象占内存大小
- java对象占内存大小
- 如何查看java对象所占的内存大小
- 【如何查看java对象所占的内存大小】
- 对于结构体对象在内存中分配地址的顺序及其占内存大小的疑问
- 检测Java对象所占内存大小
- 检测Java对象所占内存大小 (转载)
- 测量Java对象所占内存大小
- C++中对象所占的内存大小
- 看一个对象的占内存大小
- 图片占的内存大小
- java 的初步认识
- java 的初步认识
- java的初步认识
- java.lang.OutOfMemoryError: Java heap space + myeclipse中分配tomcat启动时所占内存大小
- C# LINQ详解(一)
- 操作系统原理——系统进程简析
- MySQL存储过程
- 一个解决android多渠道打包的问题插件之(兰贝壳儿)
- NullPointerException: Attempt to invoke virtual method 'android.view.ViewGroup$LayoutParam
- Java对象占内存大小分配的初步认识
- 算术与逻辑运算指令详解
- java 反射 getDeclaredMethods 和 getMehtods
- 关于安装Xtreme ToolkitPro v15.0.1出现error C2660: 'VarCmp' :错误的问题解决
- animate方法只适用于使用数值设置的css属性
- 曾经的学习笔记搬迁_140715
- 一个人的旅行
- 操作系统——第0篇
- php绘制图片失败,使用清除缓存ob_clean()可以解决。