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

med*_*oll 115 memory-leaks memory-management r

我想增加(或减少)R可用的内存量.实现此目的的方法有哪些?

Bob*_*toe 64

从:

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

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

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

您也可以手动设置可用内存量.关闭R,然后右键单击R程序图标(桌面上或程序目录中的图标).选择"属性",然后选择"快捷方式"选项卡.查找"目标"字段,并在R执行地点周围的结束引号后添加

--max-MEM大小= 500M

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

如果你得到R不能分配长度为x的向量的错误,请关闭R并将以下行添加到"Target"字段:

--max-VSIZE = 500M

或视情况而定.您可以通过在R提示符下键入来查看R可用的内存量

memory.limit()
Run Code Online (Sandbox Code Playgroud)

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

  • 关于如何获取与linux上工作的memory.limit()类似信息的任何建议? (26认同)
  • 请注意,在32位Windows上,无论您安装了多少内存,R最多只能使用3Gb的RAM.REvolution Computing提供64位版本的R for Windows,可在64位Windows上运行,可以使用所有可用的RAM:http://www.revolution-computing.com/products/revolution-enterprise.php (7认同)
  • 只需两个注释:(i)memory.limit()仅适用于Windows,(ii)将返回正确答案的命令是round(memory.limit(),2) - 至少在我的R版本上( 2.8.1). (6认同)
  • 那么,mac用户呢?我们可以做些什么吗? (6认同)
  • 该网页不再存在.没有图像,我很难遵循这一点.例如,我没有看到"快捷方式"选项卡.另外,你可以用它来减少最大内存吗? (4认同)
  • 由于错误,这在RStudio中不起作用. (2认同)

Sha*_*ane 46

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

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

  • 我真的不明白这是如何工作的.我遇到了这个内存限制问题并收到错误"达到8182Mb的总分配".我正在使用带有8GB内存的64位,所以我好像是SOL.然而,对于shiggles,我设置memory.limit(大小= 50000)......并且它工作了!但为什么??? (3认同)
  • 我知道这已经有7年了,但我正在尝试减少R可以使用的RAM量,但每当我尝试减少值时,我都会收到此消息(我在64位Windows机器上有12gb Ram) .警告消息:在memory.limit(4095)中:无法减少内存限制:忽略 (2认同)

ali*_*ika 19

对于 linux/unix,我可以建议unix软件包。

增加linux的内存限制:

install.packages("unix") 
library(unix)
rlimit_as(1e12)  #increases to ~12GB
Run Code Online (Sandbox Code Playgroud)

您还可以使用以下命令检查内存:

rlimit_all()
Run Code Online (Sandbox Code Playgroud)

详细信息: https: //rdrr.io/cran/unix/man/rlimit.html

您也可以在这里找到更多信息: Limiting memory using in R under linux


Dir*_*tel 8

  1. 买更多的公羊
  2. 切换到64位操作系统.与第1点结合.

  • 购买更多内存(并切换到其他操作系统)不是一般适当的解决方案. (19认同)
  • 当然,就像处理适合手头问题的小问题一样.希望获得解决方案通常也不会让你获得解决方案. (17认同)

Isa*_*aac 7

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

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

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

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

但另一个限制是页面文件的大小.如果您有一个小的分页文件,则无法分配大内存.您可以根据Microsoft增加页面文件的大小以获得更多的内存空间.


Tia*_*ica 5

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

memory.limit(size = ...)
Run Code Online (Sandbox Code Playgroud)

或者

memory.size(max = ...)
Run Code Online (Sandbox Code Playgroud)

关于论点

  • 大小- 数字。如果 NA 报告内存限制,否则请求新的限制,以 Mb 为单位。在 32 位 R 版本上只允许最多 4095 的值,但请参阅“详细信息”。
  • 最大- 逻辑。如果为 TRUE,则报告从操作系统获得的最大内存量,如果为 FALSE,则为当前正在使用的数量,如果为 NA,则为内存限制。

  • R 4.2.0 不支持 `memory.limit()` (6认同)