相关疑难解决方法(0)

Java在序列化期间没有堆空间

以下代码导致OutOfMemmoryError:大约300万行的堆空间.分配给JVM的内存为4 GB,使用64位安装.

while (rs.next())
{

    ArrayList<String> arrayList = new ArrayList<String>();
    for (int i = 1; i <= columnCount; i++)
    {
        arrayList.add(rs.getString(i));
    }

    objOS.writeObject(arrayList);
}
Run Code Online (Sandbox Code Playgroud)

ArrayList引用的内存在while循环的每次迭代中都有资格进行垃圾收集,而内部JVM System.gc()在抛出OutOfMemory错误之前会调用garbage collection(),因为堆空间.

那么为什么会发生异常呢?

java serialization garbage-collection heap-memory out-of-memory

19
推荐指数
1
解决办法
8708
查看次数