2

在我的 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 警告,因为它排队 uris。

WARNING: free memory: 35 MiB of 394

在 gradle 属性中,我已经有org.gradle.jvmargs参数设置来传递-Xmx设置,但它似乎没有任何区别。我认为这是因为 CorbTask 扩展了 JavaExec,它是衍生出来的。所以我看了看可能jvmArgs在 CorbTask 上设置属性,但那是不可设置的。

有没有人有任何想法?

4

2 回答 2

2

上面@grtjn 的评论解决了这个问题。

tasks.withType(JavaExec) { jvmArgs = ['-Xms1g', '-Xmx2g'] }
于 2019-04-05T11:12:52.730 回答
2

为诸如此类的场景添加了DISK -QUEUE选项。

您可以启用DISK-QUEUE选项,而不是尝试增加内存设置并希望大量 URI 适合。

于 2019-04-05T15:33:05.503 回答