JAVA数组所占内存大小的对比
1.两个数据模型
第一个是基本类型数组,第二个使用的是Float对象数组
public class SummaryModel{ private float[] summaryData; public float[] getSummaryData() { return summaryData; } public void setSummaryData(float[] summaryData) { this.summaryData = summaryData; } }
public class SummaryModel1 { private Float[] summaryData; public Float[] getSummaryData() { return summaryData; } public void setSummaryData(Float[] summaryData) { this.summaryData = summaryData; } }
2.测试程序
public class Test { public static void main(String[] args) throws Exception { SummaryModel[] sms = new SummaryModel[100000]; SummaryModel1[] sm1s = new SummaryModel1[100000]; for(int i=0;i<100000;i++){ SummaryModel sm = new SummaryModel(); SummaryModel1 sm1 = new SummaryModel1(); float[] f = new float[100]; Float[] F = new Float[100]; for(int j=0;j<100;j++){ f[j] = 1000f; F[j] = 1000F; } sm.setSummaryData(f); sm1.setSummaryData(F); sms[i] = sm; sm1s[i] = sm1; } Thread.sleep(10000000); System.out.println(sms.length); System.out.println(sm1s.length); } }
3.所占内存对比
1).两个数组同时运行
2).只运行float数组
3).只运行Float数组
4.总结
可以看到在使用float数组的时候,内存使用大小基本就是float所占内存的大小即10W*100个float
而使用Float数组时,因为Float是个对象,包括它自己的属性值,每个Float对象所占大小为16字节,基本上是float的4倍
所以大数据量计算时,尽量使用基本数据类型,不要使用对象。