【问题标题】:Release memory by gc() in silence通过 gc() 静默释放内存
【发布时间】:2014-12-20 15:02:58
【问题描述】:
我在 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
【问题讨论】:
标签:
r
memory
garbage-collection
【解决方案1】:
invisible() 函数对此很有用。一种方法是编写一个您自己的小 gc() 包装函数,它不带任何参数返回 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
【解决方案2】:
我使用的快速而肮脏的方法:
echo "gc()" > gc.R
那么你可以这样做:
source("gc.R", echo=FALSE)