Nou*_*lan 42
通常,Hotspot中Java对象使用的堆内存包括:
根据Mark Peters的建议,我想在下面添加链接 http://www.javamex.com/tutorials/memory/object_memory_usage.shtml
Java中的Integer对象占用16个字节.
我不知道运行64位和32位JVM是否有所不同.对于原始类型,它并不重要.但我不能确定对象的内存占用情况如何在64位系统下发生变化(如果有的话).
你可以在这里自己测试一下:
int是一种原始数据类型,需要32 位(4 个字节)来存储。
\n\n当您的 Java 代码使用 new 运算符创建 Java 对象的实例时,\n分配的数据比您预期的要多得多。\n例如,您可能会惊讶地发现 int 值与 Integer 对象的大小比\xe2\x80\x94 可以容纳 int 值 \xe2\x80\x94 的最小对象\n通常为 1:4。
\n\nInteger是一个需要128位(16字节)来存储int值的对象。
\n\n当我们使用 new Operator 创建新 Integer 时,它会按如下方式分配内存。
\n\nClass Object(32 位) - 由指向类信息的指针组成,在我们的例子中描述了对象,它指向 java.lang.Integer 类
标志(32 位)- 它是描述对象状态的标志集合。\n比如它是否具有哈希码,它是否是数组,即它的形状。
锁(32位)-它存储对象的同步信息。对象当前是否同步。
以上三点称为Object的元数据。
\n\n以上所有解释均基于 32 位处理器架构。它可能与JVM 版本和供应商不同。
\n| 归档时间: |
|
| 查看次数: |
36222 次 |
| 最近记录: |