12GB RAM 机器出现 Pentaho OutOfMemory 异常

Luc*_*nde 6 java pentaho out-of-memory

我刚刚在公司实现了Pentaho,并将其内存设置为12GB。当我们尝试将 1600 万行从一个表加载到另一个表时,内存不足。

我以为 Pentaho 在数据库上执行提交时会清除内存,但似乎并没有发生。当加载大约 250 万行时会抛出此异常,这意味着加载 1600 万行我需要一台 73Gb RAM 的机器?(当然是粗略的数学)

是否有任何参数或配置可以让奇迹发生?这个内存问题限制了我们的加载能力(1600万只是其中一张表)。不敢相信 Pentaho 会在不清除缓存的情况下将内存烧坏。

我的文件 D:\Pentaho\server\biserver-ee\tomcat\bin\service.bat 有以下行:

"%EXECUTABLE%" //US//%SERVICE_NAME% ++JvmOptions "-Djava.io.tmpdir=%CATALINA_BASE%\temp;
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;
-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties;
-XX:MaxPermSize=256m" --JvmMs 2048 --JvmMx 12288
Run Code Online (Sandbox Code Playgroud)

和下面这行有什么关系吗?

-XX:MaxPermSize=256m
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释一下它到底是什么吗?

提前致谢!

PS:这是我第一次接触 Pentaho,因此,对于任何不必要的问题或假设,我深表歉意。

Ste*_*veD 3

在 MaxPermSize 开关上,Oracle Java 8 之前的版本有一个称为 permgen(永久代)的内存区域。

有关更多详细信息,请参阅此答案。

这可能是内存不足异常的根源,尽管不了解 Pentaho 和你的用法,但很难说这是否是你的问题的根源。