Java图元与盒装图元的内存消耗
示例
装箱的对象始终需要8个字节来进行类型和内存管理,并且由于对象的大小始终是8的倍数,所以装箱的类型都总共需要16个字节。在另外,盒装对象的每个的使用需要存储占另一个4或8个字节,这取决于JVM和JVM选项的参考。
在数据密集型操作中,内存消耗可能会对性能产生重大影响。使用数组时,内存消耗会增加更多:一个float[5]数组仅需要32个字节;而Float[5]存储5个不同的非空值将总共需要112个字节(在没有压缩指针的64位上,这将增加到152个字节)。
盒装值缓存
装箱类型的空间开销可以通过装箱值缓存来减轻。一些盒装类型实现实例的缓存。例如,默认情况下,Integer类将缓存实例的范围来表示数字-128到+127。但是,这并不能减少由于额外的内存间接而产生的额外费用。
如果通过自动装箱或调用静态valueOf(primitive)方法创建装箱类型的实例,则运行时系统将尝试使用缓存的值。如果您的应用程序在缓存范围内使用大量值,则可以大大减少使用盒装类型的内存损失。当然,如果要“手动”创建盒装值实例,则最好使用valueOf而不是new。(该new操作始终创建一个新实例。)但是,如果大多数值不在缓存范围内,则可以更快地调用new并保存缓存查找。
热门推荐
1 训练狗狗基础
2 怎么训练狗狗笑
3 怎么训练狗狗卧下
4 上海狗狗训练基地
5 训练狗狗排便
6 狗狗基础训练
8 如何训练狗狗装死
9 狗狗站姿训练
10 狗狗训练用品
11 训练狗狗吧
12 狗狗要怎么训练
13 怎么训练狗狗玩球
14 训练狗狗唤回
15 狗狗训练躺下
16 狗狗训练指令
17 狗狗的训练技巧
18 狗狗不好训练