【问题标题】:Have I misunderstood gc() in R [duplicate]我是否误解了 R 中的 gc() [重复]
【发布时间】:2015-12-21 13:14:42
【问题描述】:

运行一个长脚本后,我查看了 Windows 任务管理器(Windows 7 64 位),发现使用了超过 3 gig 的内存。我从内存中删除了所有变量。内存仍然被使用。所以我搜索了SO并找到了这个post。我尝试运行 gc()。我得到以下信息:

> gc()
          used (Mb) gc trigger  (Mb)  max used   (Mb)
Ncells  893182 47.8    1835812  98.1   1835812   98.1
Vcells 2061325 15.8   19962389 152.4 407302954 3107.5

这是在等待几分钟之后。我期待大部分内存被释放。我错过了什么吗?谢谢。

【问题讨论】:

  • 在 rm(list=ls()) 之后调用 gc() 来提示 R 释放内存通常是一个好习惯。
  • 不,@wd11,不是。大多数这些收益都是神话般的。
  • 我有什么资格和你争论——德克;但是如果我不时地抛出一个 gc() ,我已经经历过“长”的代码条纹在稳定性方面有所增加......尤其是在 Windows 上的 RStudio IDE 中运行代码时,它似乎有帮助;然而,可能是一厢情愿的想法掩盖了我的看法......

标签: r memory-management garbage-collection


【解决方案1】:

一种可能的解释,来自Hadley Wickham's Advanced R book

这个数字[即pryr::mc() 报告的“使用”内存量应该与gc()] 给出的值一致,这与操作系统报告的内存量不一致,原因有很多: ... ...

  1. R 和操作系统都是惰性的:直到真正需要内存时,它们才会回收内存。 R 可能会保留内存,因为操作系统尚未要求返回。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多