Java Corda 3 中的 OutOfMemoryError

Java OutOfMemoryError in Corda 3

当 运行 一个 Corda 3 节点时,我得到以下异常:

Exception in thread “main” java.lang.OutOfMemoryError: Java heap space

如何增加节点可用的内存量?

您可以 运行 通过使用以下标志从命令行 运行 节点的 corda JAR 来 运行 具有额外内存的节点:

java -Xmx2048m -jar corda.jar

您还可以在节点的 node.conf 配置文件中指定节点应 运行 具有额外的内存:

myLegalName="O=PartyA,L=London,C=GB"
...
jvmArgs=["-Xmx8G"]

最后可以在deployNodes任务中指定节点应该运行有额外的内存:

task deployNodes(type: net.corda.plugins.Cordform, dependsOn: ['jar']) {
    directory "./build/nodes"
    node {
        name "O=Node,L=London,C=GB"
        ...
        extraConfig = [
            jvmArgs : [ "-Xmx1g"]
        ]
    }
}

参见 https://docs.corda.net/running-a-node.html#starting-an-individual-corda-node

在 "task deployNodes" 部分添加以下块对我有用 -

extraConfig = [ jvmArgs : [ "-Xmx1g"] ]

在 Gradle 的 Cordform 任务中添加 extraConfig 使用 Corda Enterprise 4.2 对我有效:

task deployNodes(type: net.corda.plugins.Cordform) {
    nodeDefaults {
        // ...
        extraConfig = [ custom: [jvmArgs: [ "-Xms8G", "-Xmx8G", "-XX:+UseG1GC" ]] ]
    }
    // ...
}

生成的 node.conf 片段是:

custom {
    jvmArgs=[
        "-Xms8G",
        "-Xmx8G",
        "-XX:+UseG1GC"
    ]
}