java中存储相同数据量的一维数组和二维数组所占内存是否相同?
测试代码:packagecom.lyy.java;publicclassOneArrayMemory{publicstaticvoidmain(String[]args)...
测试代码:
package com.lyy.java;
public class OneArrayMemory {
public static void main(String[] args) {
int num = 1024 * 1024 * 2;//数组中元素的个数
int[] arr = new int[num];
for(int i=0;i<arr.length;i++){
//为数组赋值
arr[i] = i;
}
//获得占用内存总数,并将单位转化为M
long memory = Runtime.getRuntime().totalMemory() / 1024 / 1024;
System.out.println("占用内存总量为:" + memory);
}
}
package com.lyy.java;
public class TwoArrayMemory {
public static void main(String[] args) {
// TODO Auto-generated method stub
int num = 1024 * 1024;
int[][] arr = new int[num][2];
for(int i=0;i<arr.length;i++){
arr[i][0] = i;
arr[i][1] = i;
}
//获得占用内存的总数,并将单位转化为M、
long memory = Runtime.getRuntime().totalMemory() / 1024 / 1024;
System.out.println("占用内存总量为:" + memory);
}
}
eclipse运行显示两个结果都是60,但是书上面写的是不一样,一维数组的是15 二维数组的是30,表示对此问题的答案怀疑,希望专业人士可以帮忙回答一下这个问题!谢谢啦 展开
package com.lyy.java;
public class OneArrayMemory {
public static void main(String[] args) {
int num = 1024 * 1024 * 2;//数组中元素的个数
int[] arr = new int[num];
for(int i=0;i<arr.length;i++){
//为数组赋值
arr[i] = i;
}
//获得占用内存总数,并将单位转化为M
long memory = Runtime.getRuntime().totalMemory() / 1024 / 1024;
System.out.println("占用内存总量为:" + memory);
}
}
package com.lyy.java;
public class TwoArrayMemory {
public static void main(String[] args) {
// TODO Auto-generated method stub
int num = 1024 * 1024;
int[][] arr = new int[num][2];
for(int i=0;i<arr.length;i++){
arr[i][0] = i;
arr[i][1] = i;
}
//获得占用内存的总数,并将单位转化为M、
long memory = Runtime.getRuntime().totalMemory() / 1024 / 1024;
System.out.println("占用内存总量为:" + memory);
}
}
eclipse运行显示两个结果都是60,但是书上面写的是不一样,一维数组的是15 二维数组的是30,表示对此问题的答案怀疑,希望专业人士可以帮忙回答一下这个问题!谢谢啦 展开
2个回答
展开全部
我分别运行了下 一个15 一个29 但是如果用one的调用two的main就是 15 30 像这样
long memory = Runtime.getRuntime().totalMemory() / 1024 / 1024;
System.out.println("占用内存总量为:" + memory);
TwoArrayMemory.main(new String[0]);
请问你的两个60是这么运行的,我觉得不管是什么都是对的,运行条件不同,内存占用也可能就不同
long memory = Runtime.getRuntime().totalMemory() / 1024 / 1024;
System.out.println("占用内存总量为:" + memory);
TwoArrayMemory.main(new String[0]);
请问你的两个60是这么运行的,我觉得不管是什么都是对的,运行条件不同,内存占用也可能就不同
追问
我也是每个都单独运行了,显示的结果是60 60 当时懵了 难道是我环境问题?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询