以下代码导致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