R语言 通过gc()静默释放内存

krugob8w  于 2023-03-15  发布在  其他
关注(0)|答案(3)|浏览(294)

我在ubuntu中运行R代码,想释放一些内存。在我移除(rm())变量后,我调用了gc()。看起来它可以工作。但是如何让它安静地工作(即不报告消息)。我尝试设置gcinfo(verbose=FALSE),但gc()仍然报告消息。

gcinfo(verbose=FALSE)
# [1] FALSE
gc()
#             used  (Mb) gc trigger   (Mb)  max used   (Mb)
# Ncells    256641  13.8     467875   25.0    350000   18.7
# Vcells 103826620 792.2  287406824 2192.8 560264647 4274.5
xwmevbvl

xwmevbvl1#

invisible()函数在这方面很有用,一种方法是编写一个自己的gc() Package 器函数,不带任何参数,隐式地返回gc()

gcQuiet <- function(quiet = TRUE, ...) {
    if(quiet) invisible(gc()) else gc(...)
}

gcQuiet()        ## runs gc() invisibly

gcQuiet(FALSE)
#          used (Mb) gc trigger (Mb) max used (Mb)
# Ncells 283808 15.2     531268 28.4   407500 21.8
# Vcells 505412  3.9    1031040  7.9   896071  6.9

gcQuiet(FALSE, verbose=TRUE)
# Garbage collection 26 = 12+1+13 (level 2) ... 
# 15.2 Mbytes of cons cells used (53%)
# 3.9 Mbytes of vectors used (49%)
#          used (Mb) gc trigger (Mb) max used (Mb)
# Ncells 283813 15.2     531268 28.4   407500 21.8
# Vcells 505412  3.9    1031040  7.9   896071  6.9
f87krz0w

f87krz0w2#

快速和肮脏的方法,我用途:

echo "gc()" > gc.R

然后你可以这样做:

source("gc.R", echo=FALSE)
yzxexxkh

yzxexxkh3#

更简单的方法是

#assign the output to a variable 
a <- gc()

相关问题