Java 编组给出OutOfMemoryError的大型对象列表

Java 编组给出OutOfMemoryError的大型对象列表,java,performance,memory-management,jaxb,Java,Performance,Memory Management,Jaxb,我正在尝试封送一个大的对象列表~100万个,它在尝试以~20K个对象的数量在Arraylist中添加对象时发出OutOfMemoryError。我想要一个XML文件。我怎样才能做到这一点 注意:我的JVM内存限制为512MB,您需要在加载项目时将其保存在xml文件中。很明显,您不能在集合中添加ArrayList很多项,但要保持较低的内存 在这种情况下,您需要使用类似于:XMLStreamWriter的东西在文件中写入XML。 避免使用在写入磁盘之前加载内存中所有内容的库。加载项目时,需要将项目保

我正在尝试封送一个大的对象列表~100万个,它在尝试以~20K个对象的数量在Arraylist中添加对象时发出OutOfMemoryError。我想要一个XML文件。我怎样才能做到这一点


注意:我的JVM内存限制为512MB,您需要在加载项目时将其保存在xml文件中。很明显,您不能在集合中添加ArrayList很多项,但要保持较低的内存

在这种情况下,您需要使用类似于:XMLStreamWriter的东西在文件中写入XML。
避免使用在写入磁盘之前加载内存中所有内容的库。

加载项目时,需要将项目保存在xml文件中。很明显,您不能在集合中添加ArrayList很多项,但要保持较低的内存

在这种情况下,您需要使用类似于:XMLStreamWriter的东西在文件中写入XML。
避免使用在写入磁盘之前加载内存中所有内容的库。

您需要了解,在64位机器中,每个指针需要8个字节。这就是为什么当您尝试加载一个大型集合时,您不仅仅是在加载数据,而是在为每个字段、对象模型的每个属性和集合的每个membver分配内存

您有三种选择:

  • 分配更多内存
  • 当你把所有的东西都放在内存中时,找到一个更紧凑的格式
  • 第三是实现某种滚动,以便一次只加载集合的一部分

    • 您需要了解,在64位机器中,每个指针需要8个字节。这就是为什么当您尝试加载一个大型集合时,您不仅仅是在加载数据,而是在为每个字段、对象模型的每个属性和集合的每个membver分配内存

      您有三种选择:

      • 分配更多内存
      • 当你把所有的东西都放在内存中时,找到一个更紧凑的格式
      • 第三是实现某种滚动,以便一次只加载集合的一部分

      您可以共享您的代码吗?您可以共享您的代码吗?您可以提供第三个选项的参考:…一次只加载一部分集合。您可以提供第三个选项的参考:…一次只加载一部分集合。