“线程中的异常”;螺纹-2“;java.lang.OutOfMemoryError:java堆空间

“线程中的异常”;螺纹-2“;java.lang.OutOfMemoryError:java堆空间,java,java-io,Java,Java Io,我试图使用ObjectOutputStream将一个类对象保存到一个文件中。当我的对象随着大小增长时,我会得到下面的错误,否则一切都好 线程“thread-2”java.lang.OutOfMemoryError中出现异常:java堆空间 在java.io.ObjectOutputStream$HandleTable.growtEntries(ObjectOutputStream.java:2308) 我的代码如下所示: try { FileOutputStream fout

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

线程“thread-2”java.lang.OutOfMemoryError中出现异常:java堆空间 在java.io.ObjectOutputStream$HandleTable.growtEntries(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();
    }

请建议我如何解决这个问题?是否有其他方法可以达到同样的效果?

使用
-Xms1024M-Xmx1024M
选项启动程序。除非该对象非常大和/或您的计算机内存量很小,否则通常不会出现该错误。

使用
-Xms1024M-Xmx1024M
选项启动程序。通常不会出现这种错误,除非该对象非常大和/或您的计算机内存量很小。

我以前遇到过类似的问题,我有以下两种方法来解决此类问题:

  • 通过调整
    -Xms
    -Xmx
    参数来增加JVM内存
  • 如果对象确实很大,那么您可能应该考虑将其拆分为更小的块,以便在读取时重新组装

  • 不久前,我遇到了类似的问题,我有以下两种选择来解决此类问题:

  • 通过调整
    -Xms
    -Xmx
    参数来增加JVM内存
  • 如果对象确实很大,那么您可能应该考虑将其拆分为更小的块,以便在读取时重新组装

  • 你想写这个.obj是什么@nobeh obj是我在程序中使用的类的对象。你想编写它的
    this.obj
    是什么@nobeh obj是我在程序中使用的类的对象。我的计算机有4GB RAM。除了增加JVM大小之外,没有其他选项可以处理内存泄漏。有没有内存优化技术可以解决这样的问题?请发表您的意见。@Vasant您可以使用内存分析器来了解您的应用程序在cpu和内存方面使用了什么。一旦确定了应用程序中使用最多cpu/内存的位置,就可以对其进行优化。如果没有这个分析,你所能做的就是增加内存。我的电脑有4GB内存。除了增加JVM大小之外,没有其他选项可以处理内存泄漏。有没有内存优化技术可以解决这样的问题?请发表您的意见。@Vasant您可以使用内存分析器来了解您的应用程序在cpu和内存方面使用了什么。一旦确定了应用程序中使用最多cpu/内存的位置,就可以对其进行优化。如果没有这种分析,你所能做的就是增加你的记忆力。