抑制 gc() 的输出结果

14

有没有可能在 R 中抑制所有 gc() 信息?

通常的方式,如 suppressWarnings(gc())suppressMessages(gc()) 不起作用。 gc() 本身有一个 verbose 选项,但它不起作用:

> gc(verbose=TRUE)
Garbage collection 375 = 234+40+101 (level 2) ... 
17.9 Mbytes of cons cells used (41%)
171.2 Mbytes of vectors used (43%)
used  (Mb) gc trigger  (Mb) max used  (Mb)
Ncells   334493  17.9     818163  43.7   818163  43.7
Vcells 22431904 171.2   52178020 398.1 50193465 383.0
> gc(verbose=FALSE)
used  (Mb) gc trigger  (Mb) max used  (Mb)
Ncells   334496  17.9     818163  43.7   818163  43.7
Vcells 22431916 171.2   52178020 398.1 50193465 383.0

提前致谢!


2
这似乎有点奇怪,因为调用gc的唯一常见原因是查看输出。正如Hadley所写的那样,“除了查看使用了多少内存之外,没有任何理由自己调用gc()。每当需要更多空间时,R都会自动调用运行垃圾回收。”请参阅http://adv-r.had.co.nz/memory.html。 - Aaron left Stack Overflow
3
?gc文件中提到:“_但是,在删除大对象后调用gc可能会很有用,因为这可能会促使R将内存返回给操作系统_。”特别是当我在a)比较速度时计时函数和b)使用read.xlsx读取较大电子表格时,我会使用它——如果没有在读入这些对象后使用gc(),我会遇到内存溢出的问题。 - MichaelChirico
2个回答

31

我有时使用invisible(gc())函数。


比我的“不太好看”的方法好多了。可以随时包装它,即 mygc <-function(...) invisible(gc(...)) - Carl Witthoft
完美运行。谢谢! - Martingales

0

不太好看,但是

foo <- gc();rm foo

我会处理它的


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接