簡體   English   中英

Akka-對象序列化期間的StackOverflowError

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM