r - 卸载 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
没有任何变化。
有什么建议么?
解决方案
推荐阅读
- outlook - 在自定义记录上集成 Outlook 和 Netsuite
- c++ - 名称相同但范围不同(例如 foo、bar::foo)的命名空间如何工作?
- proxy - 通过代理连接 Quickfix/n
- java - 根据 JMETER 中的给定键读取行值
- python - C# 错误中的 Iron Python {“type() 不接受关键字参数”}
- html - 使用 Cloudflare 自动更新 CSS 版本
- c++builder - 如何在 C++ 构建器中从 FDQuery 中清除数据
- react-native - 如何在多个屏幕之间进行底部标签导航?
- javascript - android设备angular11中的Video.js视频播放问题
- python - spacy 以字符串形式而不是在 uint8 上获取令牌