我有一个类似图形的对象,我从服务器发送到包含nodes
的{{1}}的客户端。
我有类似的东西:
adjacencyLists
每次发送包含这些清除的对象时,都会收到以下错误:
Clearing c1 = new Clearing(1, 134, 151);
Clearing c6 = new Clearing(6, 250, 88);
c1.adjacentByPath.add(new Path(1, c6));
c6.adjacentByPath.add(new Path(1, c1));
Kryonet有解决方法吗?感谢
答案 0 :(得分:2)
这是迟到的答案,但最近我遇到了这个并且能够复制和修复。
每当在kryo序列化中使用大对象图时就会发生这种情况......
根据{{3}} 的建议,修复:
来增加堆栈大小
1)尝试通过尾递归示例here来解决这个问题 2)通过在vm选项中指定for (...) { View view = inflate(..) // inflate new view layout.addView(view); // add new view }
Xss
(或根据您的要求增加)
堆叠尺寸
序列化程序Kryo在序列化时使用调用堆栈 嵌套对象。 Kryo确实最小化了堆栈调用,但是非常深 对象图,可能发生堆栈溢出。这是一个常见的问题 大多数序列化库,包括内置的Java 序列化。使用-Xss可以增加堆栈大小,但请注意 这适用于所有线程。 JVM中的大堆栈大小有很多 线程可能会占用大量内存。
Imp注意apache spark + Kryo用户:
如果是spark,我设置了SparkConf对象
中提及-Xss1m
(以及-Xmx -XX选项) 以编程方式或您也可以在spark.executor.extraJavaOptions=...