java中基本类型封装对象所占内存的大小(转)
2014-08-16 14:25
501 查看
这是一个程序,java中没有现成的sizeof的实现,原因主要是java中的基本数据类型的大小都是固定的,所以看上去没有必要用sizeof这个关键字。
实现的想法是这样的:java.lang.Runtime类中有一些简单的能涉及到内存管理的函数:
Every Java application has a single instance of class
这个例子写的很好,正好说明了java中基本类型封装对象所占内存的大小.
1.简单的Object对象要占用8个字节的内存空间,因为每个实例都至少必须包含一些最基本操作,比如:wait()/notify(),equals(), hashCode()等
2.使用Integer对象占用了16个字节,而int占用4个字节,说了封装了之后内存消耗大了4倍
3.那么Long看起来比Integer对象应该使用更多空间,结果Long所占的空间也是16个字节.
那么就正好说明了JVM的对于基本类型封装对象的内存分配的规则是如下:
Object所占内存(8个字节)+最大基本类型(long)所占内存(8个字节) = 16字节.
JVM强制使用8个字节作为边界.
所以所有基本类型封装对象所占内存的大小都是16字节.但是还是有区别,比如:Integer对象虽然占用了16个字节的内存,但是只是利用了Object所占内存(8个字节)+int所占内存(4个字节) = 12字节.还有4个字节根本没有被使用.呵呵,仔细分析了一晚,还是有很多收获的.
http://blog.csdn.net/dkarthas/article/details/1570469
实现的想法是这样的:java.lang.Runtime类中有一些简单的能涉及到内存管理的函数:
Every Java application has a single instance of class
Runtimethat allows the application to interface with the environment in which the application is running. The current runtime can be obtained from the
getRuntimemethod.
这个例子写的很好,正好说明了java中基本类型封装对象所占内存的大小.
1.简单的Object对象要占用8个字节的内存空间,因为每个实例都至少必须包含一些最基本操作,比如:wait()/notify(),equals(), hashCode()等
2.使用Integer对象占用了16个字节,而int占用4个字节,说了封装了之后内存消耗大了4倍
3.那么Long看起来比Integer对象应该使用更多空间,结果Long所占的空间也是16个字节.
那么就正好说明了JVM的对于基本类型封装对象的内存分配的规则是如下:
Object所占内存(8个字节)+最大基本类型(long)所占内存(8个字节) = 16字节.
JVM强制使用8个字节作为边界.
所以所有基本类型封装对象所占内存的大小都是16字节.但是还是有区别,比如:Integer对象虽然占用了16个字节的内存,但是只是利用了Object所占内存(8个字节)+int所占内存(4个字节) = 12字节.还有4个字节根本没有被使用.呵呵,仔细分析了一晚,还是有很多收获的.
http://blog.csdn.net/dkarthas/article/details/1570469
相关文章推荐
- Java学习日记-2.3 基本数据类型和对象所占内存空间大小
- java基本数据类型与字符串之间的转换(基本数据类型、对象封装类、自动装箱、自动拆箱)
- Java九种基本数据类型的大小,以及他们的封装类。
- Java基本数据类型在内存中的存储大小实践
- JAVA基本数据类型占用内存大小
- Java 基本类型大小与封装类
- java中九种基本数据类型的大小,以及他们的封装类。
- Java中基本数据类型所占内存大小
- java9种基本类型的大小及他们的封装类
- Java基本数据类型的【取值范围】【占内存大小】【默认值】
- 【JAVA学习】java基本数据类型与字符串之间的转换(基本数据类型、对象封装类、自动装箱、自动拆箱)
- java 中基本数据类型在内存中占据的存储大小
- Java八种基本数据类型的大小,以及他们的封装类。
- Java九种基本数据类型的大小,以及他们的封装类。
- java八种基本数据类型的大小,以及他们的封装类
- Java知识点<2> 各个基本数据类型在内存中占的字节大小
- Java基本数据类型的大小,他们的封装类以及自动拆箱和装箱
- Java中 八种基本数据类型的大小,以及他们的封装类
- Java九种基本数据类型的大小,以及他们的封装类。
- JAVA9种基本数据类型的大小,以及他们的封装类