ODI导入:java.lang.OutOfMemoryError:超出GC开销限制

时间:2017-11-29 14:18:24

标签: garbage-collection out-of-memory oracle-data-integrator

我正在尝试使用ODI Studio 12c导入ODI中的大型项目。 导入3小时后,该过程失败,并显示以下错误:

java.lang.RuntimeException: java.lang.OutOfMemoryError: GC overhead limit exceeded
    at oracle.odi.ui.framework.adapter.DefaultAdapter.executeBackgroundTask(DefaultAdapter.java:636)
    at oracle.odi.ui.framework.UIFramework.executeBackgroundTask(UIFramework.java:452)
    at oracle.odi.ui.smartie.imp.ImportSmartWizard.runImportProcess(ImportSmartWizard.java:394)
    at oracle.odi.ui.smartie.imp.ImportSmartWizard.runImport(ImportSmartWizard.java:260)
    at oracle.odi.ui.smartie.imp.ImportSmartWizard.finished(ImportSmartWizard.java:205)
    at 
Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
    at java.util.Arrays.copyOfRange(Arrays.java:2694)
    at java.lang.String.<init>(String.java:203)
    at java.lang.StringBuilder.toString(StringBuilder.java:405)
    at java.lang.Class.getDeclaredMethod(Class.java:2004)
    at com.sunopsis.dwg.smartie.RunSmartImport.run(RunSmartImport.java:3264)

我增加了选项 AddVMOption -XX:MaxPermSize = 1024M to AddVMOption -XX:MaxPermSize = 4096M

还有其他建议吗?

非常感谢

2 个答案:

答案 0 :(得分:1)

您可以尝试-XX:-UseGCOverheadLimit

答案 1 :(得分:0)

你需要增加年轻/老一代的规模,而不是永久的一代。将参数更改为-Xmx4096m(或类似)。

永久代包含虚拟机本身的所有反射数据,例如类和方法对象。您的OOM异常来自阵列副本,因此与perm gen无关。