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

时间:2009-09-08 17:28:43

标签: r memory-management memory-leaks

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

7 个答案:

答案 0 :(得分:61)

来自:

http://gking.harvard.edu/zelig/docs/How_do_I2.htmlmirror

  

Windows用户可能会收到R的错误   已经耗尽内存。

     

如果你已经安装了R并且   随后安装更多RAM,你可以   必须重新安装R才能拿走   附加容量的优势。

     

您也可以设置金额   手动可用内存。关闭R,   然后右键单击您的R程序   图标(桌面上或中的图标)   你的程序目录)。选择   ``属性'',然后选择   “快捷方式”标签。寻找   “目标”字段和结束后   报价围绕R的位置   可执行的,添加

     

- 最大-MEM大小= 500M

     

如下图所示。你可以   将此值增加到2GB或者   你有多少物理RAM   已安装。

     

如果你得到R不能的错误   分配长度为x的向量,关闭   退出R并添加以下行   “目标”字段:

     

- MAX-VSIZE = 500M

     

或视情况而定。你可以随时   检查R有多少内存   可在R提示符下输入

memory.limit()

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

答案 1 :(得分:44)

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

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

答案 2 :(得分:8)

  1. 购买更多ram
  2. 切换到64位操作系统。与第1点结合。

答案 3 :(得分:6)

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

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

对于任何进程,无论您运行多少个应用程序,

虚拟内存大小在32位系统中为4GB。任何进程都可以在32位系统中分配最多4GB内存。

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

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

答案 4 :(得分:4)

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

memory.limit(size = ...)

memory.size(max = ...)

关于参数

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

答案 5 :(得分:1)

在RStudio中,要增加:

file.edit(file.path("~", ".Rprofile"))

然后在.Rprofile中键入并保存

invisible(utils::memory.limit(size = 60000))

要减少: 打开.Rprofile

invisible(utils::memory.limit(size = 30000))

保存并重新启动RStudio。

答案 6 :(得分:0)

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

要增加Linux中的内存限制,请执行以下操作:

install.packages("unix") 
library(unix)
rlimit_as(1e12)  #increases to ~12GB

您还可以使用以下方法检查内存:

rlimit_all()

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

您还可以在此处找到更多信息: limiting memory usage in R under linux