gpt4 book ai didi

java - 在 Java 中将对象写入文件时内存不足

转载 作者:行者123 更新时间:2023-12-01 04:26:44 25 4
gpt4 key购买 nike

我当前的项目遇到了一些问题。希望有人能帮忙。

在我的项目中,我必须从数据库加载数据并保存到 HashMap 并对其进行处理(大约有 500 万条记录)。

它工作得很好。对于一些小的调整,我决定将此 HashMap 对象保存到文件中,并希望这能在我必须重新运行此程序时节省一些时间。

当我将 HashMap 写入文件时,问题出现了。内存不足。

 ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("filename"));
out.writeObject(hashMap);
out.flush();
out.close();

我的问题是

  1. 我该如何解决这个问题?
  2. 是什么导致它在保存对象时耗尽内存,因为当我处理这个 HashMap 时它很好,而在保存对象时它不需要额外的内存(我错了吗)。

(我正在 Eclipse 中开发它,并通过在 Eclipse 中作为 java 应用程序运行进行测试)

更新堆栈跟踪

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.io.ObjectOutputStream$HandleTable.growEntries(ObjectOutputStream.java:2331)
at java.io.ObjectOutputStream$HandleTable.assign(ObjectOutputStream.java:2256)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1412)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
at java.util.HashMap.writeObject(HashMap.java:1100)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:975)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1480)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)

我的磁盘空间约为 8GB,我认为这不是问题。

欢迎任何建议!谢谢。

最佳答案

您始终可以尝试使用 java -Xmx 标志增加 java 堆空间。例如,将程序运行为 java -Xmx2G。在 Eclipse 中,您可以转到 Run -> Run Configurations -> Arguments -> VM Arguments 并在框中输入 -Xmx2G。

关于java - 在 Java 中将对象写入文件时内存不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18436117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com