1

ObjectOutputStreamを使用して、クラスオブジェクトの1つをファイルに保存しようとしました。私のオブジェクトがサイズとともに大きくなると、以下のエラーが発生します。それ以外の場合は、すべて問題ありません。

スレッド「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

私はしばらく前に同様の問題に直面し、この種の問題を解決するために次の2つのオプションがありました。

  1. -Xmsおよび-Xmxパラメータを微調整してJVMメモリを増やします
  2. オブジェクトが本当に大きい場合は、読み取り時に再アセンブルできる小さなチャンクに分割することを検討する必要があります。
于 2012-07-01T09:22:50.177 に答える
3

オプションを使用してプログラムを開始し-Xms1024M -Xmx1024Mます。そのオブジェクトが本当に大きいか、RAMの量が少ないコンピュータを使用していない限り、通常、このエラーは発生しません。

于 2012-07-01T08:44:42.727 に答える