Java内存不足:增加堆空间?

时间:2017-04-09 17:26:27

标签: java r heap-memory topic-modeling

这似乎是一个常见问题,但现有的解决方案并不适用于我。 我试图在槌包的帮助下在R中执行主题建模。 语料库由论坛评论组成,是app。 50 MB大。它分为41.975个文件。

这是我的剧本:

documents_65 <- mallet.read.dir("~/20170315_F65/tm")  

# Loading corpus and stopwords
mallet.instances <- mallet.import(id.array = documents_65$id, 
                                  text.array = documents_65$text,
                              "~/stopwords.txt", 
                              token.regexp = "\\p{L}[\\p{L}\\p{P}]+\\p{L}")
topic.model <- MalletLDA(num.topics = 1000)
topic.model$loadDocuments(mallet.instances)
vocabulary <- topic.model$getVocabulary()
word.freqs <- mallet.word.freqs(topic.model)
topic.model$setAlphaOptimization(10, 30)
topic.model$train(1000)
topic.model$maximize(10)
doc.topics <- mallet.doc.topics(topic.model, smoothed=T,
                            normalized=T)

在此之后我收到错误:

Error in .jcall(wrapper, "[D", "flat_double") : 
java.lang.OutOfMemoryError: Java heap space

许多人建议,我试过

options(java.parameters = "-Xmx1000m")

之后我再次尝试了mallet.doc.topics命令并得到了同样的错误。我试图在控制面板中分配堆空间(如下所示:https://www.youtube.com/watch?v=b-D24vnuUMM)。

我也试过

gc() 

输出:

           used  (Mb) gc trigger  (Mb) max used  (Mb)
Ncells  2407281 128.6    6619081 353.5  7415161 396.1
Vcells 32395876 247.2   48628929 371.1 48628929 371.1

以及通过命令行分配更多堆空间:

java -Xmx2048m

我甚至尝试使用XLConnect-package和以下命令进入已分配的内存:

xlcMemoryReport ()

输出:

Amount of free memory in the Java Virtual Machine (JVM):  308.0197 MB

xlcFreeMemory()


.jcall(.jnew("java/lang/Runtime"), "J", "totalMemory")
.jcall(.jnew("java/lang/Runtime"), "J", "maxMemory")

我希望我不会遗漏一些非常基本的东西。我可以想象我的语料库很难处理并且需要大量内存(主要是因为大量文件)。

更新: 我无法在R中解决此问题并直接切换到mallet。在那里,我找到了包含mallet规范的批处理文件,其中可以看到分配给mallet的java内存限制为1 GB。由于我的语料库大约是1.3 GB,所以根本不可能将它加载到Mallet中。在批处理文件中,我可以轻松更改此内容并直接使用mallet。

我不知道,是否可以从R访问批处理文件。

2 个答案:

答案 0 :(得分:2)

我们必须假设您正在运行64位JVM。您可以分配给32位JVM的最大堆是1.6 GB。

你在运行JDK 1.8吗?你应该。 Perm gen消失了,取而代之的是托管元空间。

也许您可以使用VisualVM对应用进行分析。

答案 1 :(得分:1)

使用命令行选项-Xmx运行Java,该选项设置堆的最大大小。

Click Here to see Details

我希望它对你有所帮助!

相关问题