1

我试图使用 ObjectOutputStream 将其中一个类对象保存到文件中。当我的对象随着大小而增长时,我得到以下错误,否则一切都很好。

线程“Thread-2”java.lang.OutOfMemoryError 中的异常:java.io.ObjectOutputStream$HandleTable.growEntries(ObjectOutputStream.java:2308) 处的 Java 堆空间

我的代码如下所示:

 try {
        FileOutputStream fout = new FileOutputStream("D:\\out.dat");
        ObjectOutputStream os = new ObjectOutputStream(fout);
        os.writeObject(this.obj);  // Writing object to a File

        os.close();
        fout.close();
        os=null;
        fout=null;
    } catch (Exception e) {
        e.printStackTrace();
    }

请建议我如何解决这个问题?有什么替代方法可以达到同样的效果吗?

4

2 回答 2

3

使用选项启动您的程序-Xms1024M -Xmx1024M。除非该对象非常大和/或您的计算机具有少量 RAM,否则您通常不会收到该错误。

于 2012-07-01T08:44:42.727 回答
3

前段时间我遇到了类似的问题,我有以下两个选项来解决此类问题:

  1. -Xms通过调整和-Xmx参数来增加 JVM 内存
  2. 如果对象真的很大,那么您可能应该考虑将其拆分成更小的块,以便在读取时重新组合
于 2012-07-01T09:22:50.177 回答