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倍
所以大数据量计算时,尽量使用基本数据类型,不要使用对象。
JAVA数组所占内存大小的对比的更多相关文章
- 4种方法教你如何查看java对象所占内存大小
摘要:本文讲述4种查看java对象所占内存大小的方法 本文分享自华为云社区<查看java对象所占内存大小>,作者:xiewenci. 计算java对象所占内存大小 1.使用jdk8自带AP ...
- 如何获取一个Java对象所占内存大小
新建一个maven工程 我们先在IDEA中新建一个名为ObjectSizeFetcherAgent的maven工程,如下图: 在maven项目中的pom.xml中新增一个打jar包的插件,如下: &l ...
- 复杂Java对象所占内存的大小
我们在Java单个对象内存布局中讲解了单个简单的Java对象所占内存的大小的计算.那么这篇文章主要是讲解复杂Java对象所占内存大小的计算,我们把继承.复合的对象称为复杂对象 继承对象 class P ...
- 如何计算Java对象所占内存的大小
[ 简单总结: 随便一个java项目,引入jar包: lucene-core-4.0.0.jar 如果是 maven项目,直接用如下依赖: <dependency> <groupId ...
- C++类所占内存大小计算
C++类所占内存大小计算 说明:笔者的操作系统是32位的. class A {}; sizeof( A ) = ? sizeof( A ) = 1明明是空类,为什么编译器说它是1呢? 空类同样可以实例 ...
- YUV和RGB格式单像素所占内存大小分析
图片的大小定 义为:w * h,宽高分别为w和h 一.YUV格式 1.1.YUV420格式存储方式:先Y,后V,中间是U.其中的Y是w * h,U和V是w/2 * (h/2)举例:如果w = 4,h ...
- 获取JAVA对象占用的内存大小
介绍两种获取JAVA对象内存大小的方法. 第一种:Instrumentation 简介: 使用java.lang.instrument 的Instrumentation来获取一个对象的内存大小.利用I ...
- sizeof strlen strncpy用法总结 结构体实际所占内存大小 以及memset用法
sizeof测类型(数组名除外) strlen测实际长度 strncpy返回指针类型 #include <stdio.h> #include <stdlib.h> #inclu ...
- C++之类成员所占内存大小问题总结
1.空类所占字节数为1,可见代码如下 #include <iostream> using namespace std; class Parent { }; class Child:publ ...
随机推荐
- 安装uwsgi记录
yum install gcc pip install uwsgi 报错UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 ... 解决: ...
- 用sql从一张表更新数据到另外一张表(多表数据迁移)
update TBL_1 A, TBL_2 B, TBL_3 Cset a.email=c.email_addrwhere a.user_id=b.user_id and b.un_id=c.un_i ...
- 20145225《Java程序设计》 第10周学习总结
20145225<Java程序设计> 第10周学习总结 教材学习内容总结 一.网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据: 程序员所作的事情就是把数据发送到指定 ...
- secure erase 时必须umount
不umont就进行secure erase,仍然会执行成功,但是ssd确没有被清0,使用hexdump可以验证. 但是secure erase 命令却返回成功,造成误解以为已经擦除成功. 所以,sec ...
- Browser设置UA值
SWE Browser中的OptionMenu是Controller通过onKeyDown监听KEYCODE_MENU来显示的 public boolean onKeyDown(int keyCode ...
- maven 创建Hadoop程序
这里用来将新建的maven project 放入到现有的maven working set 中,这样我们就能看到项目之间的层级关系 选择下面的程序 在父项目中创建公共的pom,在pom中维护项目所需要 ...
- Mac上Homebrew的使用 (Homebrew 使 OS X 更完整)
0 Homebrew是啥? “Homebrew installs the stuff you need that Apple didn’t.——Homebrew 使 OS X 更完整”. Homebr ...
- Tomcat需要更改三个端口,才能在一台机器上搭载多个tomcat
1.shutdown端口.port改成与原有的不同即可 2.8080端口,需要更改. 3.默认端口
- php实现验证码
验证码在表单实现越来越多了,但是用js的写的验证码,总觉得不方便,所以学习了下php实现的验证码.好吧,其实是没有事情干,但是又不想浪费时间,所以学习了下php实现验证码.正所谓,技多不压身.而且 ...
- Cache 的write back和write through
分类: LINUX 内核 2009-09-23 16:21 4561人阅读 评论(0) 收藏 举报 cachebufferos存储算法 Cache 的write back和write through ...