R:了解 object.size() 与内存使用的关系
Posted
技术标签:
【中文标题】R:了解 object.size() 与内存使用的关系【英文标题】:R: Understanding how object.size() relates to memory use 【发布时间】: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会话中唯一的对象吗?
【参考方案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
【讨论】:
以上是关于R:了解 object.size() 与内存使用的关系的主要内容,如果未能解决你的问题,请参考以下文章