对象序列化期间Java堆溢出

标签 java arraylist

我有一个包含一些值的 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/

相关文章:

java - Google App Engine Java 的自定义用户管理

java - 如何在 kotlin 中比较 java 类

java - 构建助手-maven-插件目标 :regex-property how to access generated property

java - 在 Java 中写入二进制文件

java - 我自己的 ArrayBasedList 类上的 remove() 方法删除了错误的索引

java - 将数组列表更改为列表列表java

android - 空指针异常 - BaseAdapter notifyDataSetChanged

java - 通过 R.string 引用字符串

java - Spring 5 中 ExceptionHandlerExceptionResolver 始终返回 200 响应代码

java - 连接多个数组列表引用