ChatGPT解决这个技术问题 Extra ChatGPT

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

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


J
Jaap

从:

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

Windows 用户可能会收到 R 内存不足的错误。如果您已经安装了 R 并随后安装了更多 RAM,则可能必须重新安装 R 才能利用额外的容量。您也可以手动设置可用内存量。关闭 R,然后右键单击 R 程序图标(桌面或程序目录中的图标)。选择“属性”,然后选择“快捷方式”选项卡。查找 ``Target'' 字段,在 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)


请注意,在 32 位 Windows 上,R 最多只能使用 3Gb 的 RAM,无论您安装了多少。 REvolution Computing 提供了适用于 Windows 的 64 位版本的 R,它在 64 位 Windows 上运行并且可以使用所有可用的 RAM:revolution-computing.com/products/revolution-enterprise.php
只有两个注意事项:(i) memory.limit() 仅适用于 Windows,并且 (ii) 将返回正确答案的命令是 round(memory.limit(),2) - 至少在我的 R 版本上( 2.8.1)。
关于如何在 Linux 上获得与 memory.limit() 类似的信息的任何建议?
该网页不再存在。没有图像,我很难理解这一点。例如,我没有看到“快捷方式”选项卡。另外,你能用它来减少最大内存吗?
那么,mac用户呢?我们能做点什么吗?
J
Jaap

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

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


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

对于 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


I
Isaac

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

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

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

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

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


T
Tiago Martins Peres

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

memory.limit(size = ...)

或者

memory.size(max = ...)

关于论点

大小 - 数字。如果 NA 报告内存限制,否则请求新的限制,以 Mb 为单位。在 32 位 R 版本上只允许使用高达 4095 的值,但请参阅“详细信息”。

最大 - 合乎逻辑。如果为 TRUE,则报告从操作系统获得的最大内存量,如果为 FALSE,则为当前正在使用的内存量,如果为 NA,则为内存限制。


M
Michael Bishop

购买更多内存 切换到 64 位操作系统。结合第 1 点。


购买更多内存(并切换到其他操作系统)不是一般合适的解决方案。
当然可以,就像处理适合手头问题的较小问题一样。想要一个解决方案通常也不会给你一个。
Z
Zaki

在 RStudio 中,增加:

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

然后在 .Rprofile 中输入并保存

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

减少:打开 .Rprofile

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

保存并重新启动 RStudio。