如何修复R泄漏内存(在空环境中占用内存)

时间:2019-04-04 09:47:11

标签: r memory-management memory-leaks

当我清除R中的Global环境,然后调用垃圾回收时,R继续占用内存(请参见下面的代码)。有没有一种方法可以在不重新启动R的情况下清理内存“更多”?

> rm(list = ls())
> gc()
          used (Mb) gc trigger   (Mb)   max used    (Mb)
Ncells 1352699 72.3    2419890  129.3    3886542   207.6
Vcells 4231877 32.3  910657255 6947.8 1412741750 10778.4
> unloadlibs() # wrapper to remove all packages in 'sessionInfo()$otherPkgs'
[1] "Unloaded packages:"
 [1] "magrittr"   "zoo"        "reshape"    "stringi"    "openxlsx"   "lubridate"  "dtplyr"     "dplyr"      "RODBC"     
[11] "data.table"
> gc()
          used (Mb) gc trigger   (Mb)   max used    (Mb)
Ncells 1349320 72.1    2419890  129.3    3886542   207.6
Vcells 4230328 32.3  728525804 5558.3 1412741750 10778.4

在这种情况下,清理所有内容后仍会使用700mb以上的内存。

这是一个已知问题,还是我做错了什么(在这种情况下,这是什么)?可能导致这种情况的元凶和错误代码是什么?我已经:

  • dplyr使用率下降,
  • 在任何可能的情况下尝试使用data.table
  • 当我担心data.table引用会以某种方式混淆垃圾收集(不确定单个对data.table的引用的行为方式)时,请在代码中使用copy()。

感谢您的输入。

其他信息:

> R.version

platform       x86_64-w64-mingw32          
arch           x86_64                      
os             mingw32                     
system         x86_64, mingw32             
status                                     
major          3                           
minor          4.3                         
year           2017                        
month          11                          
day            30                          
svn rev        73796                       
language       R                           
version.string R version 3.4.3 (2017-11-30)
nickname       Kite-Eating Tree     

0 个答案:

没有答案