java - Akka - 对象序列化期间的 StackOverflowError

标签 java scala serialization neo4j akka

我遇到了一个持续超过 2 天的问题。当我在 actors 之间交换消息时,是在指责 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() 方法,以避免在您没有方法时发生的递归。

关于java - Akka - 对象序列化期间的 StackOverflowError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6416222/

相关文章:

Scala案例类转换

iphone - 使用指向 NSData 的指针序列化结构

java - Maven 创建不正确的 list 文件,jar 文件不可执行,因为未指定主类

java - 获取使用 3 个空格作为指定字符串第一次出现的子字符串以返回索引

scala - Scala中最简单的过程通讯形式

scala - Spark SQL 在分区列上运行,无需读取整行数据

json - 如何反序列化接口(interface)的子列表?

c# - web api 2中Data Member和JsonProperty的区别

java - 如何在java类中访问kotlin pojo

java - 网络服务 : error in code or connection