public class MainFrame extends Frame{

public static void main(String[] args) {
java.util.List<Person> pers = new ArrayList<>(d);
for(int i=0;i<10000000;i++){ //添加1千万个
Person p = new Person();
pers.add(p);
}
System.out.println("大小:"+pers.size());
}

}class Person{

int age=10; //4字节

}
如题:一个int占4个字节,那我现在往集合里面添加1千万条数据,那么占的内存,不就是4000万Kb(约等于38G)吗,那不应该直接挂掉吗?jvm

解决方案 »

  1.   

    lz, java对基本类型会进行优化的,如果你这里用String的话,就肯定挂了public class SizeTest {
        public static void main(String[] args) {
            java.util.List<Person> pers = new ArrayList<Person>();
            for(int i=0;i<10000000;i++){    //添加1千万个
                Person p = new Person(i);
                pers.add(p);
            }
            System.out.println("大小:"+pers.size());
        }
    }class Person{
        private String s;
        public Person(int i) {
            this.s = String.valueOf(i);
        }
    }