一维二维数组占内存问题

enlich 2016-09-17 08:04:55
int num1 = 1024 * 1024 * 2; 						// 数组中元素的个数
int[] arr1 = new int[num1]; // 创建int型一维数组
for (int i = 0; i < arr1.length; i++) {
arr1[i] = i; // 为数组元素赋值
}
// 获得占用内存总数,并将单位转换为M
long memory1 = Runtime.getRuntime().totalMemory() / 1024 / 1024;
System.out.println("占用内存总量为:" + memory1);
int num2 = 1024 * 1024; // 数组中元素的个数
int[][] arr2 = new int[num2][2]; // 创建int型二维数组
for (int i = 0; i < arr2.length; i++) {
arr2[i][0] = i; // 为数组元素赋值
arr2[i][1] = i; // 为数组元素赋值
}
// 获得占用内存总数,并将单位转换为M
long memory2 = Runtime.getRuntime().totalMemory() / 1024 / 1024;
System.out.println("占用内存总量为:" + memory2);



这是书上的代码,我本来以为自己写错了,可是运行了书上的之后,显示占用内存还是相同,都为123,是因为什么呢?
...全文
309 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
enlich 2016-09-20
  • 打赏
  • 举报
回复
引用 1 楼 skgary 的回复:
因为java和C的机制是完全不同的。 jvm是成堆成堆的向操作系统申请内存的。 用jvisual vm看看实际的占用。。。
还是不懂。。
sky_08_06_02 2016-09-19
  • 打赏
  • 举报
回复
skgary 2016-09-18
  • 打赏
  • 举报
回复
因为java和C的机制是完全不同的。 jvm是成堆成堆的向操作系统申请内存的。 用jvisual vm看看实际的占用。。。

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧