2012-02-06 70 views
1

我正在使用'mem.limits'來限制R進程的內存限制。 E.g:mem.limits和gc

mem.limits(500000, 20000000) 
gc() #see limits 
x <- rnorm(1e8); #should fail 

這仍然工作正常,但由於R 2.14有一個警告消息:

警告信息: 'mem.limits' 已經過時了。改用'gc'。見 幫助(「棄用」)

現在我不知道該怎麼辦。垃圾收集與設置內存限制有什麼關係?

回答

3

就R 2.14.x它們已被棄用,但仍具有功能:

> R.version.string 
[1] "R version 2.14.0 (2011-10-31)" 
> mem.limits(500000, 20000000) 
nsize vsize 
5e+05 2e+07 
Warning message: 
'mem.limits' is deprecated. 
Use 'gc' instead. 
See help("Deprecated") 
> gc() #see limits 
     used (Mb) gc trigger (Mb) limit (Mb) max used (Mb) 
Ncells 170754 9.2  350000 18.7  26.8 350000 18.7 
Vcells 272683 2.1  905753 7.0  19.1 851886 6.5 
> x <- rnorm(1e8); #should fail 
Error: vector memory exhausted (limit reached?) 

在R-devel的所有限制都被禁。該功能已被刪除,無需替換。有關詳細信息,請參閱R 2.14.0和PR#14795的新聞。

+0

Hmz。遊民。這是/是一個非常強大的功能。 – Jeroen 2012-02-06 07:18:21

+0

是否可以將此功能放在R軟件包中,還是隻能通過基本R來提供? – Jeroen 2012-02-06 07:22:28

+1

它只能在核心R中提供,因爲您必須將其放入內存分配器中。如果你不喜歡那樣,去抱怨R-devel--你不是唯一一個被這個煩惱的人(見PR)。 – 2012-02-06 15:19:36