【发布时间】:2015-11-04 14:05:03
【问题描述】:
我想增加(或减少)R 可用的内存量。实现此目的的方法是什么?
【问题讨论】:
标签: r memory-management memory-leaks
我想增加(或减少)R 可用的内存量。实现此目的的方法是什么?
【问题讨论】:
标签: r memory-management memory-leaks
发件人:
http://gking.harvard.edu/zelig/docs/How_do_I2.html (mirror)
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)。
【讨论】:
使用memory.limit()。您可以使用此命令增加默认值,memory.limit(size=2500),其中大小以 MB 为单位。您需要使用 64 位才能真正利用这一点。
另一个建议是尽可能使用内存效率高的对象:例如,使用矩阵而不是 data.frame。
【讨论】:
对于 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
【讨论】:
如果可以,Microsoft Windows 会接受来自进程的任何内存请求。
可以提供给进程的内存没有限制,但虚拟内存大小除外。
在 32 位系统中,无论您运行多少应用程序,任何进程的虚拟内存大小都是 4GB。任何进程在 32 位系统中最多可以分配 4GB 内存。
实际上,Windows 会根据进程请求和分页文件机制自动从 RAM 或页面文件中分配部分已分配内存。
但另一个限制是分页文件的大小。如果你有一个小的页面文件,你不能分配大的内存。您可以根据Microsoft增加分页文件的大小,以获得更多的内存空间。
【讨论】:
要增加分配给 R 的内存量,您可以使用 memory.limit
memory.limit(size = ...)
或者
memory.size(max = ...)
关于论据
【讨论】:
【讨论】:
在 RStudio 中,增加:
file.edit(file.path("~", ".Rprofile"))
然后在 .Rprofile 中输入并保存
invisible(utils::memory.limit(size = 60000))
减少: 打开.Rprofile
invisible(utils::memory.limit(size = 30000))
保存并重新启动 RStudio。
【讨论】: