R:了解object.size()如何与内存使用相关

时间:2017-10-25 12:16:27

标签: r memory memory-management ggplot2

我已经进行了大量分析并将所有24x8 ggplots保存到列表中。

当我检查物体尺寸时,我得到:

Intent facebookIntent = new Intent(Intent.ACTION_VIEW);
String facebookUrl = getFacebookPageURL(this);
facebookIntent.setData(Uri.parse(facebookUrl));
startActivity(facebookIntent);

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

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

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

我不确定为什么我会在尺寸方面得到这些巨大的差异,而且我还未能在网上找到明确的解释。你能帮助我理解为什么这个看似很小的物体会占用这么多的记忆吗?

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

1 个答案:

答案 0 :(得分: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