2011-12-30 46 views
0

我想將大量數據寫入文件。數據包含在一個對象中。對象被實現爲可序列化。 當我嘗試使用ObjectOutputStream的writeObject將其寫入文件時,它會給出StackOverflowError,因爲對象的大小很大。Java:將對象寫入文件避免java.lang.StackOverflowError

我只需要保存對象,以便我可以打開並再次使用它,更改一些值並再次保存到磁盤。

目標文件是由Neuroph框架創建的NeuralNetwork,所以我不想看看它的大代碼並逐個挑選數據並序列化這些東西。

請有人建議一種方法來切片的對象(或一些緩衝效果),並至少保存。我認爲那樣的事情會訣竅。

謝謝。 :)

+0

嘗試JVM的'-Xss'選項。 – fge 2011-12-30 20:48:22

+0

我感謝你所有的答覆,我增加了堆棧大小,它有一點幫助。但它有時仍然失敗。我發現文件的大小在很大程度上增加了,當我增加節點的數量在A級,而不是當我添加新級別。可能是neuroph的一些問題。無論如何,我即將開始使用Matlab。謝謝大家.. :) – Deamonpog 2012-03-17 06:16:47

回答

2

你可以考慮增加堆棧大小(-Xss2m左右),也許只是有更多的堆棧可以讓你完成它?

除此之外,沒有真正的方法來切斷序列化對象圖(不理解對象)。

+0

+1:除了改變對象的結構方式外,這是最好的選擇。 – 2011-12-30 21:42:51

+0

可能有點令人不安,認爲你可以通過序列化超過1Mb的堆棧大小(默認在我的系統上)......但是我限制了這個限制序列化一個「相當」小的樹結構,大約有160,000個節點。 – cquezel 2013-03-20 14:25:45

0

這可能是Neuroph中的一個錯誤,因爲圖表可能有循環路徑,導致無限遞歸。

在這種情況下,您需要自己做(去)序列化。至少你會學到一些。反思相對容易,因爲Neuroph框架是精簡的。

他們有一個體面的開發人員論壇嗎?

+1

任何對象序列化/反序列化機制將能夠處理對象圖中的循環,所以我懷疑這是問題。我當然不建議你自己做序列化/解密,要做到這一點很重要。 – 2011-12-30 21:04:13