在我的build.gradle中,我有一个类型为CorbTask的任务,我希望在大量的URI上执行一些进程。在这种情况下,我正在处理少于800,000个URI。
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空间。当任务运行...或者至少我之前做过,现在至少它运行..但我仍然看到自由内存警告,因为它排队uris。
WARNING: free memory: 35 MiB of 394
在gradle属性中,我已经将org.gradle.jvmargs
参数设置传递给-Xmx
设置,但它似乎没有任何区别。我假设这是因为CorbTask扩展了生成的JavaExec。所以我看了可能在CorbTask上设置jvmArgs
属性,但这是不可设置的。
有没有人有任何想法?
为这样的场景添加了DISK-QUEUE选项。
您可以启用DISK-QUEUE选项,而不是试图提高内存设置并希望大量的URI适合。
上面@grtjn的评论解决了这个问题。
tasks.withType(JavaExec) { jvmArgs = ['-Xms1g', '-Xmx2g'] }