为 CorbTask 设置堆大小
Setting heap size for CorbTask
在我的 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。当任务是 运行... 或至少我之前做过,现在至少是 运行s.. 但我仍然看到空闲内存警告,因为它将 uris 排队。
WARNING: free memory: 35 MiB of 394
在 gradle 属性中,我已经设置了 org.gradle.jvmargs
参数以传递给 -Xmx
设置,但这似乎没有任何区别。我假设这是因为 CorbTask 扩展了产生的 JavaExec。所以我考虑在 CorbTask 上设置 jvmArgs
属性,但那是不可设置的。
有没有人有什么想法?
上面@grtjn 的评论解决了这个问题。
tasks.withType(JavaExec) { jvmArgs = ['-Xms1g', '-Xmx2g'] }
为此类场景添加了DISK-QUEUE选项。
您可以启用 DISK-QUEUE 选项,而不是试图提高您的内存设置并希望大量 URI 能够适应。
- 您可以配置DISK-QUEUE-MAX-IN-MEMORY-SIZE,这将限制在内存中排队的URI 数量。其余的将溢出到临时文件中的磁盘。
- 您可以使用 DISK-QUEUE-TEMP-DIR 设置生成文件的位置(默认位置是 java.io.tmpdir)
在我的 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。当任务是 运行... 或至少我之前做过,现在至少是 运行s.. 但我仍然看到空闲内存警告,因为它将 uris 排队。
WARNING: free memory: 35 MiB of 394
在 gradle 属性中,我已经设置了 org.gradle.jvmargs
参数以传递给 -Xmx
设置,但这似乎没有任何区别。我假设这是因为 CorbTask 扩展了产生的 JavaExec。所以我考虑在 CorbTask 上设置 jvmArgs
属性,但那是不可设置的。
有没有人有什么想法?
上面@grtjn 的评论解决了这个问题。
tasks.withType(JavaExec) { jvmArgs = ['-Xms1g', '-Xmx2g'] }
为此类场景添加了DISK-QUEUE选项。
您可以启用 DISK-QUEUE 选项,而不是试图提高您的内存设置并希望大量 URI 能够适应。
- 您可以配置DISK-QUEUE-MAX-IN-MEMORY-SIZE,这将限制在内存中排队的URI 数量。其余的将溢出到临时文件中的磁盘。
- 您可以使用 DISK-QUEUE-TEMP-DIR 设置生成文件的位置(默认位置是 java.io.tmpdir)