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倍

  所以大数据量计算时,尽量使用基本数据类型,不要使用对象。

转载于:https://www.cnblogs.com/TomSnail/p/4450701.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值