首页 > 解决方案 > 为什么我的电脑内存快到极限时会减少?

问题描述

我在 R 中运行一段代码。它是并行的,在 8 个内核中运行。有趣的是,当我的内存使用量达到 15 GB 时,它会下降到 10GB(我的最大内存是 16GB)。我很好奇后台实际发生了什么?最后,我得到了所有 8 个核心的完整数据,所以我假设数据不会丢失。电脑是否将其存储在 SSD 中的某个位置以释放内存?

有关更多信息,我会遍历时间序列数据并执行大量计算,并将其存储在多个向量中。当代码完成循环时,它将所有先前的向量存储在一个列表中。在运行代码时,如果我开始打开许多需要大量内存的 chrome 选项卡,我的代码运行时间可能需要更长的时间,但仍会检索所有数据(有时会崩溃)。

很好奇发生了什么?

标签: rmemory

解决方案


没有具体代码就不可能说,但很可能是因为 R 的垃圾收集仅在必要时运行,并且仅在需要分配更多内存时运行 - 与 Python 等其他语言不同,R 不会在对象到达时立即进行垃圾收集超出范围,特别是如果 R 对象具有指向 C/C++ 对象的底层指针,则垃圾收集可以一直持续到对象无法访问后的很晚。

如果此变量内存使用存在问题,您可以尝试gc()在代码中的关键点添加显式调用。


推荐阅读