首页 > 解决方案 > 卸载 R 包并释放内存

问题描述

我有一个闪亮的应用程序,有时需要一些重量级的库(或者,也许,一些具有重量级依赖项的库)。我在同一台服务器上运行这个 Shiny 应用程序的几个实例,每个进程使用的 RAM 开始变得大得令人不安。

我想仅在需要该功能时才按需加载重包,然后将其删除,从而释放内存。有没有好的方法来做到这一点?

我试过detach这样使用,但内存使用没有变化:

Packrat mode on. Using library in directory:
- "~/src/proj/ems/ems/packrat/lib"
> gc()
         used (Mb) gc trigger (Mb) limit (Mb) max used (Mb)
Ncells 309196 16.6     654011   35         NA   654011   35
Vcells 622274  4.8    8388608   64      16384  1957831   15
> library(tmap)
> gc()
          used  (Mb) gc trigger  (Mb) limit (Mb) max used  (Mb)
Ncells 2959222 158.1    5312251 283.8         NA  4946520 264.2
Vcells 4595134  35.1   10146329  77.5      16384  8388608  64.0
> detach("package:tmap", unload=TRUE, force=TRUE)
> gc()
          used  (Mb) gc trigger  (Mb) limit (Mb) max used  (Mb)
Ncells 2960717 158.2    5312251 283.8         NA  4946520 264.2
Vcells 4598885  35.1   10146329  77.5      16384  8388608  64.0

在这种情况下,它实际上是有道理的,因为tmap它本身看起来很小,但它使用了,例如,raster它是相当大的。但即使我执行相同的命令序列而raster没有任何变化。

有什么建议么?

标签: r

解决方案


推荐阅读