第一次遇到内存不够的问题.高兴.分享一下.
package com.xlh.factory;import java.util.ArrayList;
import java.util.List;public class MemoryDemoTest { public static void main(String args[]) {

//使用内存
//使用时间

long start_time = System.currentTimeMillis() ;
List<Person> list = new ArrayList<Person>() ;
long free1 = Runtime.getRuntime().freeMemory() ;


for (int i=0;i<10000000;i++) {
Person p = new Person() ;
list.add(p) ;
}

long end_time = System.currentTimeMillis() ;
System.out.println("使用的内存为=" + (Runtime.getRuntime().freeMemory()-free1)) ;
System.out.println("使用的时间为=" + (end_time - start_time)) ;
}
}class Person {

private String name ;
private String id ;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}

}

解决方案 »

  1.   

    for (int i=0;i <10000000;i++) { 
    Person p = new Person() ; 
    list.add(p) ; 
    } 你可以每天运行一下这段代码,就可以每天高兴一下了
      

  2.   

    Person p = null ;
    for (int i=0;i<10000000;i++) {
    p = new Person() ;
    list.add(p) ;
    }
    当new Person 的时候.应该是在一个堆里面.为什么还会出现
    Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
      

  3.   

    每次new出来都不一样的,你new了1000万次 不死才怪呢
      

  4.   

    另外,new的时候不管新对象在内存的什么位置保存,它都是一个新的对象,
    都要新占一块内存,这么多次new是肯定要出问题的。
      

  5.   

    e更正一下楼上的,问题不是出在new,而是List.add()方法。
    楼主可以试试把add()那一行注释掉看看结果
      

  6.   

    这程序是测试机器性能的吧,你在运行注意修改java参数可以临时解决内存溢出的问题,但是治标不治本,千里之堤毁于蚁穴。量变引起质变