对象序列化期间Java堆溢出

时间:2012-10-14 03:58:29

标签: java arraylist

我有一个浮点数的arraylist包含一些值和3个整数的arraylist

对于浮点数的arraylist的arraylist,行数是47,列数是44300.所以当我试图将包含所有这些arraylists的对象序列化到对象中时,我有一个堆溢出错误。

我使用了arraylist的arraylist是因为在函数调用之前没有预先确定列的数量,因此必须是动态的。我相信这种arraylist的arraylist导致了这个问题。

有没有办法更好地实现动态二维数组并且内存更少?

非常感谢您的帮助

1 个答案:

答案 0 :(得分:4)

8(float size) * 47* 44300 = 16656800 bytes-->16 MB

现在,如果你考虑另外3个整数的ArrayList

4(int size) * 47* 44300 = 8328400 bytes-->8 MB * 3-->24 MB

我的意见是检查堆空间多少并增加它。将集合更改为数组将是真正的微观基准测试。

-Xms<size>        set initial Java heap size
-Xmx<size>        set maximum Java heap size

java -Xms256m -Xmx512m