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

标签 r memory memory-management ggplot2

我已经运行了许多分析并将所有 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对 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() 如何与内存使用相关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46932206/

相关文章:

iphone - didReceiveMemoryWarning 和 viewDidUnload

tensorflow - 如何降低 Tensorflow 中的 RAM 消耗?

r - 所有列上的 Pivot_longer

r - 数据框的列名称

mysql - Perl(或 R,或 SQL): Count how often string appears across columns

c++ - 将结构写入文件

python - 有效地删除列表的第一个元素

c - gcc错误生成

objective-c - 我需要在 Nib 的文件所有者中为哪些顶级对象创建 Outlest,以便减少内存问题?

r - 当要匹配的字符串模式是来自另一个数据帧的列时,如何计算 R 中匹配字符串的数量?