Java中的盒装原始文件的存储成本是多少?

前端之家收集整理的这篇文章主要介绍了Java中的盒装原始文件的存储成本是多少?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Java中有多少字节,如java.lang.Integer或java.lang.Character中的盒子原语?

int为4字节,典型的指针也是4字节(如果没有被JVM压缩).是一个整数的成本(没有缓存),因此4字节4字节= 8字节?在对象内部还有更多隐藏的字段或者对象产生的额外开销(对于我不知道的对象来说,是否有一般成本?).

我对缓存问题不感兴趣我知道在一定范围内的整数由JVM缓存.

人们可以重新表达这个问题:对于使用盒装值的内存量与原始值相比,乘积的最大因子是多少?

编辑:我明白,存在JVM的多个实现.典型的32位HotSpot实现中的典型成本是多少?

解决方法

这是定义的实现,所以没有具体的答案.但是我应该能够回答它的热点.

您需要知道的是:热点始终对齐8byte边界上的对象.此外,每个对象都有2个字的开销. [1]

如果我们把它放在一起我们得到:

32位虚拟机:4字节整数2个字对象标题= 12字节.这不是8的倍数,因此1个整数的成本是8:16byte的下一个倍数.

64位虚拟机:4字节整数2字= 20字节.四舍五入:24字节大小.

引用的大小显然不会影响对象本身的大小,除非它引用了其他对象,而不是简单的int包装器.如果是这样,对于64位JVM,现在的JVM(否则为8byte),对于32bit和4byte,每堆参考4byte,堆积为= 32gb.

[1]有兴趣的人可以查看share / vm / oops / oop.hpp中的代码

猜你在找的Java相关文章