我有一个Shiny应用程序,有时需要一些重量级的库(或者也许某些具有重量级依赖的库)。我在同一台服务器上运行了此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
执行相同的命令序列,也不会改变。
有什么建议吗?