增加(或减少)R进程可用的内存


Answers:


64

从:

http://gking.harvard.edu/zelig/docs/How_do_I2.html镜像

Windows用户可能会收到R内存不足的错误。

如果已经安装了R并且随后安装了更多的RAM,则可能必须重新安装R才能利用额外的容量。

您也可以手动设置可用内存量。关闭R,然后右键单击R程序图标(桌面或程序目录中的图标)。选择``属性'',然后选择``快捷方式''选项卡。查找``目标''字段,然后在R可执行文件的位置附近用右引号引起来,然后添加

--max-mem-size = 500M

如下图所示。您可以将该值增加到最大2GB或已安装的最大物理RAM量。

如果您收到错误消息R无法分配长度为x的向量,请关闭R并将以下行添加到``目标''字段中:

--max-vsize = 500M

或视情况而定。您总是可以通过在R提示符下键入以查看R有多少可用内存。

memory.limit()

这将为您提供可用内存量(以MB为单位)。在早期版本的R中,您需要使用:round(memory.limit()/2^20, 2)


7
请注意,在32位Windows上,无论您安装了多少R,R最多只能使用3Gb RAM。REvolution Computing提供了适用于Windows的R的64位版本,可在64位Windows上运行,并且可以使用所有可用的RAM:Revolution-computing.com/products/revolution-enterprise.php
David Smith

6
仅需注意两点:(i)memory.limit()仅在Windows上有效,并且(ii)将返回正确答案的命令是round(memory.limit(),2)-至少在我的R版本中( 2.8.1)。
medriscoll

31
关于如何获取与Linux上的memory.limit()类似信息的任何建议?
2012年

5
该网页已不存在。没有图像,我很难遵循这一点。例如,我没有看到“快捷方式”标签。另外,您可以使用它来减少最大内存吗?
blakeoft 2015年

6
那么,mac用户呢?我们可以做些什么吗?
Alfredo Lozano,2015年

51

使用memory.limit()。您可以使用此命令增加默认值memory.limit(size=2500),大小以MB为单位。您需要使用64位才能真正利用此优势。

另一种建议是尽可能使用内存有效的对象:例如,使用矩阵而不是data.frame。


3
我真的不明白这是如何工作的。我遇到了此内存限制问题,并收到错误“达到8182Mb的总分配”。我使用的是64位和8GB的ram,所以我似乎是SOL。但是,对于颤抖,我设置了memory.limit(size = 50000)...并且成功了!但为什么???
theforestecologist

2
我知道这已经有7年了,但是我试图减少R可以使用的RAM数量,但是每当我尝试减小该值时,我都会收到此消息(我在64位Windows计算机上具有12gb Ram) 。警告消息:在memory.limit(4095)中:无法降低内存限制:已忽略
6

7

如果可以,Microsoft Windows会接受来自进程的任何内存请求。

除虚拟内存大小外,对可以提供给进程的内存没有限制。

在32位系统中,无论您正在运行多少个应用程序,虚拟内存大小均为4GB。在32位系统中,任何进程最多可以分配4GB内存。

实际上,Windows会根据进程请求和页面文件机制自动从RAM或页面文件中分配已分配内存的某些部分。

但是另一个限制是页面文件的大小。如果您有一个小的分页文件,则不能分配大的内存。您可以根据Microsoft的要求增加页面文件的大小,以拥有更多的内存空间。



2

要增加分配给R的内存量,可以使用memory.limit

memory.limit(size = ...)

要么

memory.size(max = ...)

关于论点

  • 大小 -数字。如果NA不报告内存限制,否则以Mb为单位请求新的限制。在32位R版本中,最多只能使用4095的值,但请参见“详细信息”。
  • max-逻辑。如果为TRUE,则报告从OS获得的最大内存量;如果为FALSE,则报告当前正在使用的内存量;如果为NA,则报告内存限制。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.