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

java – 在多维数组的声明中的顺序是否对使用的内存有影响?

发布时间:2020-12-14 14:26:21 所属栏目:Java 来源:网络整理
导读:要为a和b分配多少个字节? import android.graphics.Bitmap;Bitmap[][][] a = new Bitmap[1000][2][2];Bitmap[][][] b = new Bitmap[2][2][1000]; 请注意,我只是询问纯数组的内存,没有内部的对象. 为什么我问因为我正在写一个Android游戏.对我而言,顺序并不
要为a和b分配多少个字节?
import android.graphics.Bitmap;

Bitmap[][][] a = new Bitmap[1000][2][2];
Bitmap[][][] b = new Bitmap[2][2][1000];

请注意,我只是询问纯数组的内存,没有内部的对象.

为什么我问因为我正在写一个Android游戏.对我而言,顺序并不重要,但是如果存在差异,那么节省一些就会很好.

解决方法

是的,它有所作为.

在Java中,2D数组是1D数组的阵列,除了保存元素本身所需的空间之外,数组(如所有对象)都具有标题.

所以考虑int [10] [2]对int [2] [10],并假设一个32位的JVM.

> int [2] [10]由一个2个元素的数组和2个10个元素组成.共3个数组对象22个元素.
> int [10] [2]由一组10个元素组成,10个数组为2个元素.共11个数组对象30个元素.

如果我们假设标题大小为3 32位字(典型值为32位JVM),引用为1 32位字,则

> int [2] [10]取3 * 3 22 * 1 = 31字= 124字节
> int [10] [2]取11 * 3 30 * 1 = 63字= 252字节

应用相同的逻辑,您可以估计更大数量的数组的大小.

但是很明显,如果最大尺寸是最右边的,则使用较少的空间.

我使用int数组来完成数学,但是在32位机器上,int和引用占用相同的字节数.在64位计算机上,引用可以与int或long相同,具体取决于JVM选项.标题尺寸也可能不同….不完全确定…潜在的平台依赖.

我没有考虑到保持Bitmap对象本身所需的空间,但是组织数组是一样的.

(编辑:李大同)

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

    推荐文章
      热点阅读