【问题标题】: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)
      

      【讨论】:

        猜你喜欢
        • 2017-02-12
        • 2013-01-12
        • 2012-12-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多