保管库中的行超过200时出现缓冲区溢出问题

时间:2018-01-22 06:45:49

标签: h2 corda h2db

我们开发了一个应用程序,它在表格中创建了保险库中的义务。如果表的行大小小于200,则应用程序正常工作。但是,如果行数超过200,则在执行期间会出现以下错误 -

请指定PageSpecification,因为结果[201]比默认页面尺寸[200]

更多

将分页从默认200增加到400后,我得到java堆内存不足错误。 我厌倦了将节点的堆大小从512m(默认)增加到1024m。但是,仍然没有解决这个问题,我在H2 DB中得到错误 - 例外:从线程“MVStore后台编写器nio:C:/ Users / Administrator / Desktop / Settlemen”中的UncaughtExceptionHandler抛出java.lang.OutOfMemoryError 吨/金色结算/建造/节点/鲍勃/ persistence.mv​​.db“

我也厌倦了在H2 DB文档中寻找解决方案。但是,找不到任何解决方案。

1 个答案:

答案 0 :(得分:1)

默认情况下,如果未指定for (const auto& it : items){ std::cout << "name " << it.first << " quantity " << it.second << '\n'; } 大小,则Vault查询会快速失败。见https://docs.corda.net/releases/release-V2.0/api-vault-query.html?highlight=pagination#pagination

与查询大小成比例地增加堆大小应该适当缩放(即,您不应该看到任何内存不足错误)。我们知道您的交易的大小(例如,交易的大小,包括在H2数据库的交易表中作为blob存储的合约状态)对我们有用,这样我们就可以执行一些内部基准来看看我们是否可以重现相同的情况。