2012-07-01 51 views
1

我試圖使用ObjectOutputStream將其中一個類對象保存到文件。當我的對象與大小一起增長時,我得到下面的錯誤,否則它是好的。線程「線程-2」中的異常java.lang.OutOfMemoryError:Java堆空間

異常在線程 「線程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(); 
    } 

請問我該如何解決這個問題?任何替代方法實現相同?

+0

什麼是'this.obj'你想寫它? – nobeh

+0

@nobeh obj是我在程序中使用的類的一個對象。 – Vasant

回答

3

-Xms1024M -Xmx1024M選項啓動程序。除非該對象真的很大,並且/或者您的計算機RAM數量較少,否則通常不會出現該錯誤。

+0

我的電腦有4GB RAM。除了增加JVM大小外,沒有其他選項可用於處理內存泄漏。任何內存優化技術都可以解決這些問題?請評論你的意見。 – Vasant

+0

@Vasant您可以使用內存分析器來查找您的應用程序使用的cpu和內存。一旦你確定你的應用程序在哪裏使用大多數CPU /內存,那麼你可以優化它。沒有這個分析,你所能做的就是增加你的記憶力。 –

3

我較早前面臨着類似的問題,我有以下兩個選項來解決這樣的問題:通過調整-Xms-Xmx參數

    1. 增加JVM內存如果對象是真正的大那麼你應該考慮將它分成更小的塊,你可以在讀取時重新組合
  • 相關問題