2017-04-09 171 views
1

这似乎是一个常见问题,但现有的解决方案并不适合我。 我正在尝试使用木槌包在R中执行主题建模。 该语料库由论坛评论和应用程序组成。大50 MB。它分为41.975个文件。Java内存不足:增加堆空间?

这里是我的脚本:

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") 

之后,我尝试了木槌。 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软件包和以下命令分配的内存:

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中解决此问题并直接切换到槌子。在那里,我发现了批处理文件的规格为槌,其中可以看到分配给槌的Java内存限制为1 GB。由于我的语料库大约为1.3 GB,因此根本无法将其加载到Mallet中。在批处理文件中,我可以很容易地改变这一点,并直接使用木槌。

我不知道,如果有可能从R.

+0

不,这是Windows 10. –

+0

UPD:重新安装了JDK版本,所有东西都开始工作了很多。这似乎是主要问题。我会及时向大家发布。 –

回答

2

我们必须假设你正在运行的是64位JVM访问该批处理文件。您可以分配给32位JVM的最大堆为1.6 GB。

您是否正在运行JDK 1.8?你应该。 Perm gen不见了,取而代之的是托管元空间。

也许你可以使用VisualVM配置文件。

+0

我正在运行Java版本1.8.0_121和64位JVM。 –

+0

这些工具可能在OS平台上有所不同。 –

3

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

Click Here to see Details

我希望它有助于您!