我试图封送一大堆〜100万个对象,并且在尝试将Arraylist中的对象添加到约20K个对象时给出OutOfMemoryError。我想要一个XML文件。我该如何实现?
注意:我的JVM内存限制为512MB
答案 0 :(得分:0)
您需要在加载项目时将其保存在xml文件中。显然,您不能将很多项目作为ArrayList添加到集合中,但要保持较低的内存。
在这种情况下,您需要使用XMLStreamWriter之类的文件来编写XML。 避免在写入磁盘之前使用库将所有内容加载到内存中。
答案 1 :(得分:0)
您需要了解,在64位计算机中,每个指针占用8个字节。这就是为什么当您尝试加载大型集合时,您不仅在加载数据,还在为每个字段,对象模型的每个属性以及集合的每个成员分配内存。
您有三个选择: