【问题标题】:R: Understanding how object.size() relates to memory useR:了解 object.size() 与内存使用的关系
【发布时间】:2017-10-25 12:16:26
【问题描述】:

我已经运行了许多分析并将所有 24x8 ggplots 保存到一个列表中。

当我检查我得到的对象大小时:

print(object.size(output_list), units = "Mb")
115.3 Mb

如果我将对象保存为 rds 文件,则该对象占用大约 650 Mb。

如果我检查我得到的对象的内存使用情况:

library(pryr)
mem_used() # Note: In example I only have this object in the R memory
28.2 GB

我不确定为什么我的尺寸会有这么大的差异,而且我还没有在网上找到明确的解释。你能帮我理解为什么这个看似很小的物体会占用这么多内存吗?

我有一个想法,这是因为所有地块都将所有数据点都存储在它们的 plotData 中?但这不会影响object.size吗?我还认为这是由于树结构,例如在 data.tree 包中,每个笔记保存一个单独的环境。

【问题讨论】:

  • 函数mem_used()返回R使用的内存总量,output_list是R会话中唯一的对象吗?

标签: r memory memory-management ggplot2


【解决方案1】:

根据帮助,mem_used 将 Ncells 和 Vcells 相加——Vcells(向量使用的内存)和 Ncells(其他所有东西使用的内存))。

这似乎在我的笔记本电脑上运行良好。

最好也这样做gc() 以获得更好的想法。

rm(list = ls())
m <- 1:100000000

object_size(m)
#400 MB

mem_used()
#454 MB

gc()
#           used  (Mb) gc trigger  (Mb)  max used  (Mb)
#Ncells   753450  40.3    1442291  77.1   1442291  77.1
#Vcells 51417867 392.3  121970165 930.6 101419240 773.8

【讨论】:

    猜你喜欢
    • 2018-10-12
    • 2019-09-21
    • 2021-09-14
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 2012-07-01
    • 2011-03-09
    相关资源
    最近更新 更多