java - 继续获取: Requested array size exceeds VM limit error

标签 java out-of-memory

我在这里看到了几个与接收 java 错误有关的线程:java.lang.OutOfMemoryError: Requested array size exceeds VM limit 但我已经尝试了这些建议,但没有一个对我有用。以下是我使用的脚本:

#!/bin/bash
#$ -cwd
#$ -N Sample_S06-9841_A4_primary
#$ -S /bin/bash
module load picard/1.130

java -Xmx12g -XX:MaxPermSize=8192m -XX:+UseCompressedOops -Djava.io.tmpdir=/mnt/work1/users/home2/loldfiel/tmp -jar $picard_dir/picard.jar AddOrReplaceReadGroups INPUT=/mnt/work1/users/roehrlgroup/GCT_2/star_aligner/final_alignment/Sample_S06-9841_A4_primary/Aligned.out.sam OUTPUT=./Sample_S06-9841_A4_primary/S06-9841_A4_primary_rg.bam SORT_ORDER=coordinate RGID=S06-9841_A4_primary RGLB=lib RGPL=Illumina RGPU=none RGSM=Sample_S06-9841_A4_primary

我尝试了各种不同的选项,例如将 -Xmx 参数增加到 20g 并删除 MaxPermSize 参数(我也尝试将其降低到 256m)。我在不使用 UseCompressedOops 参数的情况下运行它。

我之前运行过这个脚本(没有 MaxPermSize 和 UsedCompressedOops 参数)并且完全没有问题,所以我不确定为什么在这个示例中它不会运行。

有没有人对问题可能有任何其他想法?你认为我的 bam 文件有问题吗?

注意:我确实在输出目录中收到了一个文件,但它是空的。

谢谢,

张国荣

最佳答案

Java 中的数组受限于数组索引是 int 类型,并且索引必须为正数(以及数组大小)。

但是 VM 中可能存在限制,阻止使用大小为 Integer.MAX_VALUE ((2^31)-1) 的数组;确切的最大值似乎是特定于 VM 的实现。因此,当请求的数组长度为 Integer.MAX_VALUE 或非常接近它时,VM 可能会抛出您获得的异常。请注意,这无法通过为 VM 分配更多内存来解决,因为这是 VM 实现方式的限制。

更糟糕的是,据我所知,JDK 中没有任何常量/方法可以实际指示 VM 支持的实际最大数组大小;所以在这种情况下它的硬编码是安全的。

可能有一种方法可以防止程序通过更改其参数来尝试分配该大小的数组。最好的办法是直接从专门针对您的软件的供应商/帮助论坛寻求帮助。切换到不同的 VM(版本或供应商)也可能解决问题;如果另一个 VM 确实支持最大大小的数组。

关于java - 继续获取: Requested array size exceeds VM limit error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32359697/

相关文章:

java - 线程 "AWT-EventQueue-0"java.lang.OutOfMemoryError : PermGen space 中的 xception

java - 错误 java.lang.OutOfMemoryError : GC overhead limit exceeded

java - slider 的标签不显示

java - Android - NoClassDefFoundError 与从其他非 Android 项目生成的 .jar

java - jna.library.path 是否使用任何环境变量?

java - 如何优化java中的 "replaceFirst"方法

在 Mac OS X 10.6.8 上构建 android 2.1 期间出现 java.lang.OutOfMemoryError

java - Spring Boot 应用程序 - java.lang.OutOfMemoryError : GC overhead limit exceeded 问题

java - 为什么在应用 Fe-composite 时拉伸(stretch)会向下移动? SVG中如何实现多个-feComposite操作?

java - JPanel 上带有图像的透明 JList 和标签