我们用以下方法创建了一个应用程序:
Corda版本为3.2
CordApp具有:
对象列表(约3000个对象)被拆分为大小为450的列表(由于ActiveMQ Artemis错误,列表较大[java.lang.IllegalArgumentException:记录太大而无法存储])< / p>
在第一个流程之后,我们启动另一个具有类似逻辑的流程。在这种情况下,我们有一个StateAndRef列表(使用RPCops查询的结果) 作为流中的输入被接收,并用作交易的输出。
我们随机收到 Java堆空间错误和 SslHandshakeCompletionEvent(javax.net.ssl.SSLException:握手超时)。 这似乎是严重的内存泄漏。
我们只能在本地计算机上使用参数-Xmx10240m(10GB)来完成整个工作流程,仅 。监视资源,似乎在事务处理期间堆特别地增长。
这次崩溃的原因可能是什么?
无法将Corda与具有此大小的列表一起使用吗?
答案 0 :(得分:2)
解决方案是不仅在州的Entity类中而且在包含这些实体的类中添加toString和hashCode的替代(该类扩展了MappedSchema)。现在,节点永远不会超过1.2 GB的已用内存。