线程“Thread-2”中的异常java.lang.OutOfMemoryError:Java堆空间

时间:2012-07-01 08:38:48

标签: java java-io

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

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

我的代码如下所示:

 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();
    }

请建议我如何解决这个问题?任何替代方法都可以实现相同的目标吗?

2 个答案:

答案 0 :(得分:3)

使用-Xms1024M -Xmx1024M选项启动您的程序。你通常不会得到那个错误,除非那个对象真的很大和/或你有一个RAM量很小的计算机。

答案 1 :(得分:3)

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

  1. 通过调整-Xms-Xmx参数
  2. 来增加JVM内存
  3. 如果对象非常大,那么您应该考虑将其拆分为较小的块,以便在读取时重新组装
相关问题