【问题标题】:how to override the 2GB memory limit when R startsR启动时如何覆盖2GB内存限制
【发布时间】:2015-12-14 10:22:38
【问题描述】:

当 R 启动时,内存限制(由 memory.limit 返回)设置为 2GB,而与计算机上的可用内存无关。 (I found that out recently)。我想在启动过程中的某个时刻,这个限制被设置为实际可用的内存。

这可以通过在启动时获取的 .Rprofile 文件中打印 memory.limit() 来查看。它打印“2047”。另一方面,当 R 启动并在控制台中输入 memory.limit() 时,我得到“16289”。

我使用自定义 .Rprofile 文件,并且在启动期间我需要访问超过 2GB 的空间。

如何覆盖此限制?

我目前的解决方法是使用memory.limit(size=16289) 在.Rprofile 中自己设置限制,但是每次在具有不同RAM 量的计算机上工作时我都必须对其进行编辑,这种情况经常发生。

是否有我可以更改的选项、我可以编辑的 .ini 文件,或者我可以做些什么?

操作系统和 R 版本:

> sessionInfo()
R version 3.2.2 (2015-08-14)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

编辑:这不是重复的,至少不是建议问题的重复。这与管理可用内存无关!我有 16GB 的内存,memory.limit() 表明我的限制确实是 16GB。

这一切都始于我收到“已达到 2GB 内存分配”的警告(暗示我有 2GB 内存限制)。经查,似乎是indeed R limits the memory at 2GB during the startup process

我想在 R 启动时自动加载我的数据,为此我在 .Rprofile 中有一个小的加载脚本。我加载了超过 2GB 的数据,因此我需要访问我的 16GB。我的问题是关于实现这一点。这与提议的副本没有任何共同点,除了关键字......

【问题讨论】:

  • 使用的是哪个 R 版本和操作系统?
  • @Vova 不是重复的,问题是完全不同的 IMO。我确实有足够的内存,而且我没有做任何需要内存的操作。我的问题是 R 启动时内存限制设置为 2GB。
  • 我必须说,我对“接近”投票的数量感到惊讶......所谓的重复问题是关于某人达到其 PC 上的内存限制。 “解决方案”是优化代码以减少内存。 ---- 我的问题是,在 R 启动期间,内存限制被人为设置得较低,因此阻止我从 .Rprofile 文件中自动加载超过 2GB 的数据。将我推荐给另一篇文章是荒谬的:一旦 R 启动,我就可以加载数据,因为我有足够的内存。我的问题是关于启动时2GB的内存限制,这是完全不同的。
  • 写到“重复”的问题:我的记忆不是“碎片化的”,因为 R 刚刚启动并且全局环境是空的。 R 不会与其他程序“竞争”,因为我有超过 10GB 的可用 RAM。我的问题是关于 R 内存限制并没有使它成为一个骗局。

标签: r memory startup


【解决方案1】:

我将此解释为您希望在 .RProfile 文件中使用 memory.limit(size=16289),但您不想在每次更换具有不同内存的计算机时都设置特定数字。为什么不直接动态拉取你需要的内存呢?在窗口中:

TOT_MEM <- as.numeric(gsub("\r","",gsub("TotalVisibleMemorySize=","",system('wmic OS get TotalVisibleMemorySize /Value',intern=TRUE)[3])))/1024
memory.limit(size=TOT_MEM)

这会将可用内存设置为系统的总内存,或者

FREE_MEM <- as.numeric(gsub("\r","",gsub("FreePhysicalMemory=","",system('wmic OS get FreePhysicalMemory /Value',intern=TRUE)[3])))/1024
memory.limit(size=FREE_MEM)

这会将 memory.limit 设置为启动时的总可用内存。

将其放在 RProfile 中,在您加载数据的上方。

【讨论】:

  • 感谢系统调用!不过,这需要一些调整,因为我可以互换使用 Windows 和 Linux……我想我可以测试操作系统并相应地进行分支。我一直在想,一定有某种 .ini 文件,我可以在其中指定启动时的内存限制。
  • (现在想想,我什至没有检查过这个问题是否也出现在 Linux 上)
猜你喜欢
  • 1970-01-01
  • 2013-02-08
  • 2014-02-15
  • 2015-07-10
  • 1970-01-01
  • 2017-11-02
  • 1970-01-01
  • 2014-01-14
  • 1970-01-01
相关资源
最近更新 更多