我试图编组大量的对象~100万,并且在尝试在~20K对象中添加Arraylist中的对象时给出了OutOfMemoryError。我想有一个XML文件。我怎样才能做到这一点?
注意:我的JVM内存限制为512MB
您需要在加载时将项目保存在xml文件中。很明显,你不能将一个集合作为ArrayList添加很多项,但保持低内存。
在这种情况下,您需要使用以下内容编写XML文件:XMLStreamWriter。在写入磁盘之前,请避免使用加载内存中所有内容的库。
您需要了解在64位机器中,每个指针的成本为8个字节。这就是为什么当您尝试加载大型集合时,您不只是加载数据,而是为每个字段,对象模型的每个属性以及集合的每个元素分配内存。
你有三个选择: