加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 05:23:47 所属栏目:Java 来源:网络整理
导读:Java中有多少字节,如java.lang.Integer或java.lang.Character中的盒子原语? int为4字节,典型的指针也是4字节(如果没有被JVM压缩).是一个整数的成本(没有缓存),因此4字节4字节= 8字节?在对象内部还有更多隐藏的字段或者对象产生的额外开销(对于我不知道的对
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中的代码

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读