這似乎是一個常見問題,但現有的解決方案並不適合我。 我正在嘗試使用木槌包在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.
不,這是Windows 10. –
UPD:重新安裝了JDK版本,所有東西都開始工作了很多。這似乎是主要問題。我會及時向大家發佈。 –