【发布时间】:2014-11-10 08:05:53
【问题描述】:
我刚刚在我的公司实现了 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
和下面这行有关系吗?
-XX:MaxPermSize=256m
谁能解释一下它到底是什么?
提前致谢!
PS:这是我第一次接触 Pentaho,所以,对于任何不必要的问题或假设,我深表歉意。
【问题讨论】:
-
缺少一些重要信息: 1. 您使用的是哪个 JVM? 2. 你得到的确切错误是什么?
-
在询问涉及异常的 Java 问题时,始终在问题中包含堆栈跟踪。 --JvmMS 和 --JvmMX 标志是 Pentaho 特有的吗?我问是因为那不是用于在 JVM 上设置内存的标志。
-
(Oracle)JVM 的标志是 -XmxN。 N 是带有可选后缀 k (kilo) 和 m (mega) 的大小。没有后缀默认为字节。那可能是
--JvmMx 12288m吗? -
@UwePlonus 它抛出的 Java 错误是
java.lang.OutOfMemoryException,而我使用的 JVM 是 7 (build 1.7.0_55-b13)。 -
@PeterMmm 这是问题的一部分...我可以更改,但不确定是否应该更改。 :)
标签: java out-of-memory pentaho