【发布时间】:2019-04-05 04:21:54
【问题描述】:
在我的 build.gradle 中,我有一个 CorbTask 类型的任务,我希望在其中通过大量 URI 执行一些进程。在这种情况下,我处理的 URI 略少于 800,000 个。
task updateSharePointMetadata(type: com.marklogic.gradle.task.CorbTask) {
classpath = configurations.corb
xccUrl = "xcc://${mlUsername}:${mlPassword}@${mlHost}:${mlStagingPort}"
urisModule = "corb/selectSharepointMetadata.xqy|ADHOC"
processModule = "corb/updateBinarySizeInSharePointMetadata.xqy|ADHOC"
threadCount = 8
batchSize = 100
batchUriDelim=','
}
当我运行此任务时...在对 URI 进行排队的过程中,我收到了 OutOfMemoryError,Out of Heap space。当任务运行时......或者至少我之前做过,现在至少它运行......但我仍然看到 Free Memory 警告,因为它排队 uri。
WARNING: free memory: 35 MiB of 394
在 gradle 属性中,我已经有 org.gradle.jvmargs 参数设置来传递 -Xmx 设置,但它似乎没有任何区别。我认为这是因为 CorbTask 扩展了 JavaExec,它是衍生出来的。因此,我查看了可能在 CorbTask 上设置 jvmArgs 属性,但这是不可设置的。
有人有什么想法吗?
【问题讨论】:
-
你试过了吗? tasks.withType(JavaExec) { jvmArgs = ['-Xms1g', '-Xmx2g'] }
-
这行得通。谢谢@grtjn
标签: marklogic marklogic-9 ml-gradle marklogic-corb