[英]Akka - StackOverflowError during object serialization
我遇到的問題持續了超過2天。 當我在參與者之間交換消息時,是在指責JVM堆棧溢出。
我的消息是一個具有許多鏈接的對象(10000個子對象在鏈接列表中鏈接在一起)。 即,具有Neo4J關系的對象。
錯誤是這樣的:
java.lang.StackOverflowError
at java.io.Bits.putLong(Bits.java:108)
at java.io.ObjectOutputStream$BlockDataOutputStream.writeLong(ObjectOutputStream.java:1928)
at java.io.ObjectOutputStream.writeLong(ObjectOutputStream.java:788)
at java.util.Date.writeObject(Date.java:1303)
at sun.reflect.GeneratedMethodAccessor41.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1469)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
有人對此有任何解決方案嗎?
謝謝
您使用的是java.util.LinkedList
還是您自己的自定義鏈接列表? 如果是后者,則需要為其編寫一個自定義的writeObject()
方法,該方法避免了如果沒有遞歸時將發生的遞歸。
該問題的可能候選者是具有自身參考的對象。 給定您對域的表達,我懷疑孩子有一個包含其自身的鏈接列表或循環引用。 也就是說,它鏈接到的節點之一又有一個鏈接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.