栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么未定义Java的布尔原始大小?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么未定义Java的布尔原始大小?

简短的答案:是的,布尔值作为32位实体进行操作,但布尔数组每个元素使用1个字节。

更长的答案:JVM使用32位堆栈单元,用于保存局部变量,方法参数和表达式值。小于1个单元的基元被填充,大于32位(长和双精度)的基元占用2个单元。这种技术可以最大程度地减少操作码的数量,但是确实有一些特殊的副作用(例如需要屏蔽字节)。

数组中存储的基元可能使用少于32位,并且有不同的操作码来加载和存储数组中的基元值。布尔值和字节值都使用

baload
bastore
操作码,这意味着布尔数组每个元素占用1个字节。

就内存对象布局而言,这在“私有实现” 规则下已涉及到,它可以是1位,1字节,或者如另一个提示所指出的,与64位双字边界对齐。最有可能的是,它占用基础硬件的基本字长(32或64位)。

尽量减少布尔值使用的空间:对于大多数应用程序来说,这实际上不是问题。堆栈框架(包含局部变量和方法参数)不是很大,并且在大型方案中,对象中的离散布尔也不大。如果你有许多带有大量布尔值的对象,则可以使用通过getter和setter管理的位域。但是,你将付出的CPU时间损失可能比内存中的损失更大。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/407723.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号