如何在R启动时覆盖2GB内存限制



R引导时,内存限制(由memory.limit返回)设置为2GB,而与计算机上的可用内存无关。(我最近发现了)。我想,在引导过程中的某个时刻,这个限制被设置为实际可用的内存。

这可以通过在启动时来源的.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内存限制)。经过调查,在启动过程中,R确实将内存限制在2GB。

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

我将其解释为您希望在.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中,位于您加载数据的上方。

最新更新