r - 为什么我的电脑内存快到极限时会减少?
问题描述
我在 R 中运行一段代码。它是并行的,在 8 个内核中运行。有趣的是,当我的内存使用量达到 15 GB 时,它会下降到 10GB(我的最大内存是 16GB)。我很好奇后台实际发生了什么?最后,我得到了所有 8 个核心的完整数据,所以我假设数据不会丢失。电脑是否将其存储在 SSD 中的某个位置以释放内存?
有关更多信息,我会遍历时间序列数据并执行大量计算,并将其存储在多个向量中。当代码完成循环时,它将所有先前的向量存储在一个列表中。在运行代码时,如果我开始打开许多需要大量内存的 chrome 选项卡,我的代码运行时间可能需要更长的时间,但仍会检索所有数据(有时会崩溃)。
很好奇发生了什么?
解决方案
没有具体代码就不可能说,但很可能是因为 R 的垃圾收集仅在必要时运行,并且仅在需要分配更多内存时运行 - 与 Python 等其他语言不同,R 不会在对象到达时立即进行垃圾收集超出范围,特别是如果 R 对象具有指向 C/C++ 对象的底层指针,则垃圾收集可以一直持续到对象无法访问后的很晚。
如果此变量内存使用存在问题,您可以尝试gc()
在代码中的关键点添加显式调用。
推荐阅读
- visual-studio - Visual Studio 与 Win CE 5/6/7 平台的兼容性
- reactjs - 打字稿:找不到“bin”、“src”、“test”的类型定义文件
- oracle - 在 Oracle 中按名称访问记录字段
- python - Python:在 Selenium Ms.Edge(铬)Webdriver 中禁用图像
- php - 缩小使用 sort() 函数的 PHP 代码
- java - 在井字游戏中确定获胜者时,如何避免重复?
- oracle - 更新后第三方应用程序在任何时候都无法看到来自 oracle 的数据
- azure - Azure CLI 监控所有虚拟机的指标
- jquery - 在 Codeigniter 中对 Join Table 查询进行 DataTable 服务器端处理
- python - 具有模型属性和 2 个输入的 TensorFlow 模型无法在数据集上进行预测