当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文件,或者我可以做些什么吗?
OS和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。我的问题是关于实现这一点。除了关键字...
之外,这与没有任何共同点与提议的副本完全相同答案 0 :(得分:1)
我在你的.RProfile文件中想要memory.limit(size=16289)
来解释这个,但是每次更换具有不同内存的计算机时,你都不想设置特定的数字。为什么不动态拉动你需要的内存?在Windows中:
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中,位于加载数据的位置。