相关疑难解决方法(0)

诀窍来管理R会话中的可用内存

人们用什么技巧来管理交互式R会话的可用内存?我使用下面的函数[根据Petr Pikal和David Hinds在2004年的r-help列表中的帖子]列出(和/或排序)最大的对象,偶尔列出rm()其中的一些.但到目前为止,最有效的解决方案是在具有充足内存的64位Linux下运行.

人们想分享其他任何好玩的伎俩吗?请发一个帖子.

# improved list of objects
.ls.objects <- function (pos = 1, pattern, order.by,
                        decreasing=FALSE, head=FALSE, n=5) {
    napply <- function(names, fn) sapply(names, function(x)
                                         fn(get(x, pos = pos)))
    names <- ls(pos = pos, pattern = pattern)
    obj.class <- napply(names, function(x) as.character(class(x))[1])
    obj.mode <- napply(names, mode)
    obj.type <- ifelse(is.na(obj.class), obj.mode, obj.class)
    obj.size <- napply(names, object.size)
    obj.dim <- t(napply(names, function(x)
                        as.numeric(dim(x))[1:2]))
    vec <- is.na(obj.dim)[, 1] & (obj.type != "function")
    obj.dim[vec, 1] <- napply(names, length)[vec]
    out <- data.frame(obj.type, …
Run Code Online (Sandbox Code Playgroud)

memory-management r

480
推荐指数
19
解决办法
10万
查看次数

R multicore mcfork():无法分叉:无法分配内存

我得到了名义上的错误:

mcfork(): Unable to fork: Cannot allocate memory
Run Code Online (Sandbox Code Playgroud)

试图用mcapply运行一个函数后,但top我说我是51%

这是在EC2实例上,但我确实有最新的R.

有谁知道还有什么可以导致这个错误?

谢谢,

-N

memory multicore r amazon-ec2 domc

18
推荐指数
2
解决办法
9382
查看次数

完成R会话大小

由于我在R Session(8GB Windows PC)中不断达到内存大小限制,我开始remove加载大对象.但是一旦达到此限制,删除对象似乎无法正常工作.

所以,我想知道是否有办法获得R Session大小.我知道可以检索对象的大小(在这个帖子中看到).我想知道是否有办法计算完整的R Session大小(加载包,对象等).

谢谢!

session ls r

12
推荐指数
1
解决办法
606
查看次数

R每个变量的内存使用情况

现在使用R,我的记忆几乎已满(已经应用了gc()).有没有办法知道每个变量的内存消耗,以便我知道哪一个占用最多的内存并删除那个.

memory variables r

7
推荐指数
1
解决办法
1万
查看次数

(R 错误)错误:cons 内存已耗尽(达到限制?)

我正在处理大数据,我有一个 70GB 的 JSON 文件。我正在使用 jsonlite 库将文件加载到内存中。

我曾尝试使用 AWS EC2 x1.16large 机器(976 GB RAM)来执行此加载,但 R 因错误而中断: Error: cons memory exhausted (limit reached?) 加载 1,116,500 条记录后。考虑到我没有足够的 RAM,我尝试在具有 1.95TB RAM 的更大 EC2 机器上加载相同的 JSON。

加载 1,116,500 条记录后,该过程仍然中断。我使用的是 R 版本 3.1.1,我正在使用--vanilla选项执行它。所有其他设置均为默认设置。

这是代码:

library(jsonlite)
data <- jsonlite::stream_in(file('one.json'))
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

r bigdata

7
推荐指数
1
解决办法
2420
查看次数

如何在无需重启 R 会话的情况下清理 R 内存

我知道有很多类似的问题都得到了公认的答案(这里这里甚至这个),但到目前为止,我没有找到关于如何在不重新启动 R 会话的情况下释放一些内存空间的明确答案。

我知道,可以保存他的工作区,重新启动 R 并重新加载工作区,但是:

  1. 我不确定,但是这样做您必须重新加载所有库,对吗?
  2. 如果你的工作空间很大,这样做可能需要时间,如果我经常这样做,我不想每次都浪费时间。
  3. 如果我删除一个大对象,是否只是实际释放该对象占用的内存的正常行为?

情况似乎并非如此。即使在删除了我工作区的一半最大对象(感谢这个很好的答案)并运行之后gc()top仍然给我提供了完全相同的内存使用百分比。

这里的一个评论,它说:

R 的垃圾收集将 RAM 标记为可用。由您的操作系统来收回

听起来不错,但不确定这真的发生了。top即使在rm()和之后gc(),甚至在操作系统中启动新的其他进程之后,甚至在 2 小时、10 小时或 3 天之后,仍然向我显示 R 使用的相同数量的内存。

这个评论表明它必须查看加载的库和图形设备,但为什么呢?我该如何解决?

如果我rm()一个3GB对象然后gc()用来释放内存,R 怎么可能仍然使用相同百分比的内存?

memory garbage-collection r

6
推荐指数
1
解决办法
1800
查看次数

在网页抓取时只有小对象的高R内存使用率

我正在抓一个网站,并从for-loop调用我的抓取功能.在循环的4,000次迭代中,我的计算机警告我RStudio使用了太多的内存.但是在使用转义键断开循环之后,我在R环境中看不到任何大对象.

我尝试了这两个 帖子的提示,但他们没有透露原因.当我mem_used()pryr包裹打电话时,我得到:

2.3 GB

这与Windows任务管理员最初所说的一致.它表示2.3 GB,然后在循环结束后十分钟内降至1.7 GB,在循环后二十分钟内降至1.2 GB. mem_used()继续说2.3 GB.

但根据lsos()上面链接的第一篇文章中的函数,我的R对象很小:

> lsos()
                       Type     Size  Rows Columns
all_raw              tbl_df 17390736 89485      12
all_clean            tbl_df 14693336 89485      15
all_no_PAVs          tbl_df 14180576 86050      15
all_no_dupe_names    tbl_df 13346256 79646      15
sample_in            tbl_df  1917128  9240      15
testdat              tbl_df  1188152  5402      15
username_res         tbl_df   792936  4091      14
getUserName        function   151992    NA      NA
dupe_names           tbl_df   132040  2802       3
time_per_iteration  numeric    65408  4073      NA
Run Code Online (Sandbox Code Playgroud)

这说我最大的对象是17 MB,不接近2.3 GB.我怎样才能找到内存使用的罪魁祸首并修复它?循环中是否存在逐渐占用内存的东西? …

memory r rvest

5
推荐指数
0
解决办法
395
查看次数