2014-10-31 75 views
12

我正在大規模地進行機器學習,但之後由於R內存佔用,我的計算變得如此緩慢。
我明白我的對象,也是我試過gc()和結果:由R會話分配的清除內存(gc()不幫助!)

  used (Mb) gc trigger (Mb) max used (Mb) 
Ncells 4460452 231.5 15288838 1116.6 36599071 1954.7 
Vcells 29572776 349.4 324509788 2712.9 350796378 3376.4 

我的任務管理器顯示還撥出了我的記憶3GB R對話和我的電腦仍然很慢。
如何釋放R所佔用的內存? (我不想重新啓動電腦)

+0

是不是由操作系統本身管理的內存分配? – 2014-10-31 08:46:28

+0

@Pascal,No R需要使用內存並在使用後釋放它。但它不適合我不知道的一些事物! – Cina 2014-10-31 09:02:03

+1

你退出或重新啓動了R會話嗎? – Roland 2014-10-31 09:06:24

回答

10

我發現最好的解決方案是重新啓動R會話。 R中的工作室ctr+shft+f10

,如果你不想保存工作區

makeActiveBinding("refresh", function() { system(paste0(R.home(),"/bin/i386/R")); q("no") }, .GlobalEnv) 

paste0(R.home(),"/bin/i386/R --no-save") #--save will save workspace 

歡呼。

+1

這似乎也是我唯一的選擇。這很煩人! – RobertMc 2016-08-31 17:49:24

1

正如在這個答案 - https://stackoverflow.com/a/8813862/2602477 - 「gc不會刪除任何你仍在使用的變量 - 它只會釋放你無法訪問的變量的內存」 。

你可以使用RM功能消除工作環境(幾乎)一切:

rm(list = ls()) 

需要注意的是,如果你想刪除隱藏的物體,而且還需要使用

rm(list = ls(all.names = TRUE)) 
+1

已經嘗試過。沒有太大的變化 – Cina 2014-10-31 09:32:30

3

您需要遵循兩個步驟。 首先,運行rm(list = ls()) 然而,儘管它消除在LS(),您需要使用.rs.restartR()

這將有效地徹底清除內存重新啓動[R 所有對象。