强制R(和Rstudio)在Windows上使用虚拟内存

ska*_*kan 7 memory r

我正在使用大型数据集,并且R经常会产生错误,告诉它无法分配该大小的向量,或者它没有足够的内存.

我的计算机有16GB内存(Windows 10),我正在处理大约4GB的数据集,但有些操作需要大量内存,例如将数据集从宽格式转换为长格式.在某些情况下,我可以使用gc()来释放一些内存,但很多时候它还不够.

有时我可以在较小的块上打破数据集,但有时我需要同时处理所有表.

我读过Linux用户没有这个问题,但是Windows呢?

我已经尝试在SSD(200GB)上设置大页面文件,但我发现R根本不使用它.

我可以看到任务管理器,当内存消耗达到16GB时R停止工作.页面文件的大小似乎没有任何区别.

如何强制R使用页面文件?我需要用一些特殊标志自己编译吗?

PD:我的经验是删除对象rm()以及稍后使用gc()不会恢复所有内存.当我使用大型数据集执行操作时,无论我是否使用gc(),我的计算机在每一步都有越来越少的可用内存.

PD2:我希望不会听到像"你需要更多RAM内存"这样的简单解决方案

PD3:我一直在测试,问题只发生在Rstudio中.如果我直接使用R它运作良好.有人知道如何在RStudio中做到这一点.

ska*_*kan 10

为了在每次启动RStudio时自动运行,将忽略具有R_MAX_MEM_SIZE的解决方案,无论是作为环境变量创建还是在.Rprofile内创建.

写memory.limit(64000)也被忽略.

正确的方法是在文件.Rprofile中添加以下行

invisible(utils::memory.limit(64000))
Run Code Online (Sandbox Code Playgroud)

或者你想要的任何数字.

当然,你需要一个足够大的页面文件.该数字包括免费RAM和免费页面文件空间.

使用页面文件较慢,但只在需要时才使用.

我发现奇怪的是它只会让你增加使用的最大内存,但它不允许你减少它.