Java SLURM-OutOfMemoryError:超出GC开销限制

Java SLURM-OutOfMemoryError:超出GC开销限制,java,batch-file,out-of-memory,Java,Batch File,Out Of Memory,我已向SLURM提交了一份sbatch作业 #!/bin/bash #SBATCH --job-name=freset_weighting #SBATCH --output=freset.out #SBATCH --error=freset.err #SBATCH --time=120:00:00 #SBATCH --mem=32769 #SBATCH --mail-type=BEGIN #SBATCH --mail-type=END java -jar ~/FReSET/freset_0.1

我已向SLURM提交了一份sbatch作业

#!/bin/bash
#SBATCH --job-name=freset_weighting
#SBATCH --output=freset.out
#SBATCH --error=freset.err
#SBATCH --time=120:00:00
#SBATCH --mem=32769
#SBATCH --mail-type=BEGIN
#SBATCH --mail-type=END

java -jar ~/FReSET/freset_0.1.jar -XX:-UseGCOverheadLimit -Xmx32g
作业停止时出现以下错误:

Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
    at java.util.regex.Matcher.<init>(Matcher.java:207)
    at java.util.regex.Pattern.matcher(Pattern.java:885)
    at java.util.regex.Pattern.split(Pattern.java:994)
    at java.util.regex.Pattern.split(Pattern.java:1056)
线程“main”java.lang.reflect.InvocationTargetException中的异常 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)中 位于java.lang.reflect.Method.invoke(Method.java:597) 位于org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58) 原因:java.lang.OutOfMemoryError:超出GC开销限制 位于java.util.regex.Matcher。(Matcher.java:207) 位于java.util.regex.Pattern.matcher(Pattern.java:885) 位于java.util.regex.Pattern.split(Pattern.java:994) 位于java.util.regex.Pattern.split(Pattern.java:1056) java进程应该使用-XX:-UseGCOverdelLimit参数启动,以避免此错误

干杯, 来自java用法的Markus

Usage: java [-options] -jar jarfile [args...] (to execute a jar file) 如果您遇到这个错误,我会关心您的程序是如何使垃圾收集像这样超时工作的。我建议做一些分析,找出是什么导致了这么多临时对象。这个问题有一些关于调整的答案

java -XX:-UseGCOverheadLimit -Xmx32g -jar ~/FReSET/freset_0.1.jar