我有时会草率地编程。好吧,我一直在草率地编程,但有时这会以内存不足错误的形式出现。我开始在使用 rm() 命令删除对象时遵循一些纪律,事情变得更好。我在网上看到关于删除大型数据对象后是否应该显式调用 gc()
的混合消息。有人说 R 在返回内存错误之前会运行 gc()
,而其他人则说手动强制 gc
是个好主意。
删除大对象后是否应该运行 gc()
以确保最大的内存可用性?
最佳答案
“也许吧。”我也这样做,而且经常甚至在循环中,如
cleanMem <- function(n=10) { for (i in 1:n) gc() }
然而,根据我的经验,这并不能将内存恢复到原始状态。
所以我通常做的是将手头的任务保存在脚本文件中,并使用“r”前端(在 Unix 上,来自“littler”包)执行这些任务。 Rscript 是其他操作系统上的替代方案。
该工作流程恰好符合
- workflow-for-statistical-analysis-and-report-writing
- tricks-to-manage-the-available-memory-in-an-r-session
我们之前已经介绍过。
关于r - 使用 gc() 命令强制在 R 中运行垃圾回收,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10512602/