java数组内存占用问题.

Contact[] ca = new Contact[10]; while(x<10){ ca[x]=new Contact(); x++; }

Contact refc;
while(x<10){
refc=new Contact();
x++;}

哪条比较好?哪条内存用的比较少?为什么?

第1个回答  2013-08-03
下面这种只有一个变量的占内存少
上面的数组,在你开始循环之前,必须先分配10个Contact类型的变量空间出来,
但是下面那样做只是用了1个Contact类型空间本回答被网友采纳
第2个回答  2013-08-03
都是创建了10个对象,但是前一个10个对象都保存在数组里,直到数组过了生命期,后一个只保存了一个对象,其他都过了生命期,gc的时候会被回收掉
第3个回答  2013-08-03
第一段代码等于:
Contact ca1=new Contact();
Contact ca2=new Contact();
Contact ca3=new Contact();
Contact ca4=new Contact();
Contact ca5=new Contact();
Contact ca6=new Contact();
Contact ca7=new Contact();
Contact ca8=new Contact();
Contact ca9=new Contact();
Contact ca10=new Contact();
第二段代码等于:
Contact ca=new Contact(); ca=new Contact();
ca=new Contact();
ca=new Contact();
ca=new Contact();
ca=new Contact();
ca=new Contact();
ca=new Contact();
ca=new Contact();
ca=new Contact();

第一段是给10个对象创建了10个不同的实例,他们占用不同的内存区域.
第二段是给1个对象重复创建10次实例,新的覆盖旧的.始终是只占用一块内存.
第4个回答  2015-11-13
  下面这种只有一个变量的占内存少
  上面的数组,在你开始循环之前,必须先分配10个Contact类型的变量空间出来,
但是下面那样做只是用了1个Contact类型空间
第5个回答  2013-08-03
内存不够

java数据类型占用字节数
Java数据类型占用字节数就是指在计算机内存上占用的字节数量。程序员需要了解数据类型占用字节数,以便在编写程序时合理地分配内存空间,提高程序效率。二、Java基本数据类型占用字节数1. byte:占用1个字节(8位),范围是-128到127;2. short:占用2个字节(16位),范围是-32768到32767;3. int:占...

常见OutOfMemoryError问题之Java heap space 堆溢出问题详解
最常见的原因是应用程序需要的内存超出了分配的堆空间。例如,编写一个试图创建2M大数组的Java代码,如果堆空间设置为12MB,它会抛出堆溢出错误。相比之下,只要堆空间足够,比如13MB,程序就能正常运行。内存泄漏也常引发此类问题。Java中的对象一旦创建,JVM会负责内存管理,但如果程序未能正确释放不再使...

java基本数据类型占用字节
char是字符类型,它占用2个字节。boolean是布尔类型,它占用1个字节。Java基本数据类型占用字节的大小在Java中,不同的数据类型占用不同的字节数。下表列出了Java基本数据类型占用字节的大小。| 数据类型 | 占用字节 ||---|---|| byte | 1 || short | 2 || int | 4 || long | 8 || fl...

java new 对象数组的内存问题
Person[] p = new Person[2];是开辟2个数组p空间,值为null。下面代码是存放的对象的引用地址。

JAVA里String数组在内存分配中分配的空间每个占几个字节?
java中一个int占4个字节,由于java是unicode编码,一个char可以占两个字节,可以存储一个汉字。一个String,要看有几个字母或者几个汉字,一个英文字母就是一个字节,一个汉字就是两个字节,以此类推计算。

JAVA数组问题
ABC[] a=null是指将该数组内所有元素初始化为空值,null代表空值,而不是空,也就是每个数组元素中存放的是特定的null代表为空。这一点是基于数据结构的安全考虑的。当然也可以用来判断a[i]元素是否为空了。C中int a[5] 则存放的是数据的地址,而不是存放这个数据的实在数值。CPU通过寻找这个地址...

java基本数据类型所占字节数是多少?
Java基本数据类型所占字节数如下:1. `byte`:占1个字节。2. `short`:占2个字节。3. `int`:占4个字节。4. `long`:占8个字节。5. `float`:占4个字节。6. `double`:占8个字节。7. `char`:占2个字节。8. `boolean`:由JVM实现决定,通常为1字节或更少。但实际大小可能因JVM实现...

java程序内存溢出一般什么原因
java把内存分两种:一种是栈内存,另一种是堆内存1。在函数中定义的基本类型变量和对象的引用变量都在函数的栈内存中分配;2。堆内存用来存放由new创建的对象和数组在函数(代码块)中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量所分配的内存空间;在堆中分配...

java中存储相同数据量的一维数组和二维数组所占内存是否相同?
15 30 像这样 long memory = Runtime.getRuntime().totalMemory() \/ 1024 \/ 1024;System.out.println("占用内存总量为:" + memory);TwoArrayMemory.main(new String[0]);请问你的两个60是这么运行的,我觉得不管是什么都是对的,运行条件不同,内存占用也可能就不同 ...

java中while(true)死循环会造成jvm内存溢出吗?
Java对数组大小有限制,超过限制时会出现异常。解决方法:- 严格控制数组大小,确保在平台允许的范围内。10. 系统杀死进程内存溢出 当系统内存不足时,操作系统会通过内存杀手来释放内存,导致进程被杀死。解决方法:- 升级系统内存。- 避免在高负载环境下运行敏感应用。理解上述不同类型的内存溢出及其解决...

相似回答