为什么我的电脑内存在快到极限时会减少?
Why the memory in my pc decreases when it almost reaches the limit?
我是 运行 R 中的一段代码。它是并行化的,运行 在 8 个内核中。有趣的是,当我的内存使用量达到 15 GB 左右时,它会下降到 10GB(我的最大内存是 16GB)。我很好奇后台实际发生了什么?最后,我从所有 8 个内核获得了完整的数据,因此我假设数据不会丢失。 pc 是否将其存储在 SSD 中的某个位置以释放内存?
有关更多信息,我循环遍历时间序列数据并执行大量计算,并将其存储在多个向量中。当代码完成循环时,它将所有先前的向量存储在一个列表中。
虽然 运行 代码,但如果我开始打开许多需要大量内存的 chrome 选项卡,我的代码 运行 时间可能会花费更长的时间,但仍会检索所有数据(有时会崩溃)。
很好奇这是怎么回事?
是的,你是对的电脑有时使用硬盘作为内存。它被称为交换内存。当您的 ram 过载时,它会将一些数据发送到硬盘并暂时存储在那里。
如果没有具体的代码就不可能说,但很可能是由于 R 的垃圾收集 运行 仅在必要时且仅在需要分配更多内存时使用 - 不像其他语言 Python],当对象超出范围时,R 不会立即对其进行垃圾收集,特别是如果 R 对象具有指向 C/C++ 对象的底层指针,垃圾收集可以一直持续到对象无法访问。
如果此变量内存使用有问题,您可以尝试在代码的关键点添加对 gc()
的显式调用。
我是 运行 R 中的一段代码。它是并行化的,运行 在 8 个内核中。有趣的是,当我的内存使用量达到 15 GB 左右时,它会下降到 10GB(我的最大内存是 16GB)。我很好奇后台实际发生了什么?最后,我从所有 8 个内核获得了完整的数据,因此我假设数据不会丢失。 pc 是否将其存储在 SSD 中的某个位置以释放内存?
有关更多信息,我循环遍历时间序列数据并执行大量计算,并将其存储在多个向量中。当代码完成循环时,它将所有先前的向量存储在一个列表中。 虽然 运行 代码,但如果我开始打开许多需要大量内存的 chrome 选项卡,我的代码 运行 时间可能会花费更长的时间,但仍会检索所有数据(有时会崩溃)。
很好奇这是怎么回事?
是的,你是对的电脑有时使用硬盘作为内存。它被称为交换内存。当您的 ram 过载时,它会将一些数据发送到硬盘并暂时存储在那里。
如果没有具体的代码就不可能说,但很可能是由于 R 的垃圾收集 运行 仅在必要时且仅在需要分配更多内存时使用 - 不像其他语言 Python],当对象超出范围时,R 不会立即对其进行垃圾收集,特别是如果 R 对象具有指向 C/C++ 对象的底层指针,垃圾收集可以一直持续到对象无法访问。
如果此变量内存使用有问题,您可以尝试在代码的关键点添加对 gc()
的显式调用。