使用R中的bartMachine包的java.lang.OutOfMemoryError

时间:2014-09-17 10:22:46

标签: r bayesian java

我运行了一个包含11000个样本和20个特征的BART模型(其中一半是分类变量)。我的mac有8G内存。首先,我通过函数set_bart_machine_memory(5000)将内存设置为5000 MB。

然后我可以通过函数bartMachine一次拟合模型。如果我想运行另一个模型,那么R会返回如下错误:

 Exception in thread "pool-10-thread-1" Exception in thread "pool-10-thread-3"
 java.lang.OutOfMemoryError: Java heap space
 java.lang.OutOfMemoryError: Java heap space
 Exception in thread "pool-10-thread-2" java.lang.OutOfMemoryError: Java heap space
 Exception in thread "pool-10-thread-4" java.lang.OutOfMemoryError: Java heap space
 Error in .jcall(bart_machine$java_bart_machine, "Z", "isDestroyed") :
 java.lang.OutOfMemoryError: Java heap space

我认为在内存中有两个bartMachine对象可能不是一个好主意,所以我只是通过函数destroy_bart_machine()杀死第一个模型,然后第二个模型可以运行。

主要问题在于bartMachineCV()。默认情况下大约有20个模型适合,当R运行带有第二组参数设置的bart模型时,上面的内存错误就会碰到我(即:bartMachine CV try:k:2 nu,q:3, 0.9米:200)。

我对JAVA不熟悉,有没有办法在8GB RAM计算机上运行bartMachineCV()?感谢。

2 个答案:

答案 0 :(得分:0)

您需要运行64位Java JVM; 32位JVM只能为您提供~1.8GB的最大堆。我建议您使用JDK 7或更高版本;这些日子为甲骨文的生产。

完成后,您可以像这样设置JVM内存设置:

http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html

您想要设置-Xmx=1024M或类似内容。

答案 1 :(得分:0)

我是bartMachine包的维护者。确保下载新版本并注意初始化库后出现的消息:

> library(bartMachine)
...
Welcome to bartMachine v1.2.0! You have 0.48GB memory available.

如果您在消息上看到少量RAM,则JVM设置出现问题。 64位JVM是必须的。使用

options(java.parameters = "-Xmx2500m")

在致电library(bartMachine)之前尝试设置更多内容。