R:了解object.size()与内存使用的关系



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

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

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

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

我有一个想法,这是因为所有图都在其绘图中存储了所有数据点数据?但这不会也影响 object.size 吗?我还认为这是由于树结构,例如在data.tree包中,每个注释都保存了一个单独的环境。

根据帮助,mem_used对 Ncell 和 Vcell 求和 - 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

最新更新