我有一个包含一些值的 float 数组列表和另外 3 个整数数组列表
对于 float 的 arraylist 的 arraylist,行数为 47,列数为 44300。因此,当我尝试将包含所有这些 arraylist 的对象序列化到对象中时,出现堆溢出错误。
我使用 arraylist 的 arraylist 是因为列数在函数调用之前不是预先确定的,因此必须是动态的。我相信这个 arraylist 的 arraylist 导致了问题。
有没有什么方法可以用更少的内存更好地实现动态二维数组?
非常感谢您的帮助
最佳答案
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
关于对象序列化期间Java堆溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12879180/