由R session分配的清除内存(gc()没有帮助!)

Cin*_*ina 18 memory garbage-collection r

我正在进行大规模的机器学习,但是由于R内存占用,我的计算速度变慢了.
我清除了我的对象,我也尝试gc()了结果:

           used  (Mb) gc trigger   (Mb)  max used   (Mb)
Ncells  4460452 231.5   15288838 1116.6  36599071 1954.7
Vcells 29572776 349.4  324509788 2712.9 350796378 3376.4
Run Code Online (Sandbox Code Playgroud)

我的任务管理器显示R会话仍然分配超过3GB的内存,我的电脑仍然很慢.
如何释放R占用的内存?(我不想重启电脑)

Cin*_*ina 12

我找到的最佳解决方案是重启R会话.在R工作室ctr+shft+f10

如果您不想保存工作区

makeActiveBinding("refresh", function() { system(paste0(R.home(),"/bin/i386/R")); q("no") }, .GlobalEnv)

paste0(R.home(),"/bin/i386/R --no-save") #--save will save workspace
Run Code Online (Sandbox Code Playgroud)

干杯.

  • 这不是问题的答案。也没有任何其他答案建议会话重新启动。当然,如果您重新启动会话,所有内容都将被删除。但你不应该这样做。一旦对象被删除并使用 gc() 完成垃圾收集,内存就应该被释放。由于某种原因,R 没有正确执行此操作。这是一个重要问题,应该由 R Core 团队解决。困扰我很多年了... (9认同)
  • 这似乎也是我唯一的选择.这很烦人! (3认同)

Pra*_*kar 8

你需要遵循两个步骤。首先,运行rm(list = ls()) 但是,虽然它删除了 ls() 中的所有对象,但您需要使用重新启动 R.rs.restartR()

这将有效地完全清除内存。

  • `.rs.restartR()` 是一种 RStudio 方法,它不适用于常规 R (2认同)