Java占用内存计算

Asura_X_Y_Y 2013-11-07 09:29:08
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)吗,那不应该直接挂掉吗?
...全文
201 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Asura_X_Y_Y 2013-11-07
  • 打赏
  • 举报
回复
擦,引用错了。 1楼的大哥,我改成你的代码,没挂,不过运行时间变长了,内存一度飙到90%多
Asura_X_Y_Y 2013-11-07
  • 打赏
  • 举报
回复
引用 楼主 Asura_X_Y_Y 的回复:
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)吗,那不应该直接挂掉吗?
你的挂了吗?我改成你的代码,没挂,不过运行时间变长了,内存一度飙到90%多
Asura_X_Y_Y 2013-11-07
  • 打赏
  • 举报
回复
引用 3 楼 huxiweng 的回复:
我来试一下:
我的没挂啊。还输出集合的大小了,何解啊?
teemai 2013-11-07
  • 打赏
  • 举报
回复
直接挂了。。。
teemai 2013-11-07
  • 打赏
  • 举报
回复
我来试一下:
teemai 2013-11-07
  • 打赏
  • 举报
回复
楼主的代码也会挂吧? 楼主运行不挂?
Jacky-止涯 2013-11-07
  • 打赏
  • 举报
回复
引用 楼主 Asura_X_Y_Y 的回复:
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);
    }
}

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧