确定对象的内存使用情况?

我想知道我的当前工作区中每个对象使用了多less内存。 有没有一个简单的方法来做到这一点?

前一段时间我从这里偷了这个小块头:

sort( sapply(ls(),function(x){object.size(get(x))})) 

它给了我很好的服务

1. 按对象大小

逐个对象的基础上获取内存分配,调用object.size()并传入感兴趣的对象:

 object.size(My_Data_Frame) 

(除非参数传入是一个variables,它必须被引用,否则包装在一个get调用。)variables的名称,然后省略引号,

你可以遍历你的命名空间并获取其中所有对象的大小,如下所示:

 for (itm in ls()) { print(formatC(c(itm, object.size(get(itm))), format="d", big.mark=",", width=30), quote=F) } 

2. 按对象types

通过对象types获取名称空间的内存使用情况,请使用memory.profile()

 memory.profile() NULL symbol pairlist closure environment promise language 1 9434 183964 4125 1359 6963 49425 special builtin char logical integer double complex 173 1562 20652 7383 13212 4137 1 

(还有另一个函数, memory.size(),但是我听说过,它只能在Windows上工作,它只是返回一个MB值;所以要获得会话中随时使用的最大内存,请使用memory.size (最大值= T))。

你可以试试这个问题的lsos()函数:

 R> a <- rnorm(100) R> b <- LETTERS R> lsos() Type Size Rows Columns b character 1496 26 NA a numeric 840 100 NA R> 

这个问题已经发布,并得到了很多以前的合法答案,但我想让你知道另一个有用的提示,以获得一个对象的大小使用一个名为gdata和ll()函数库。

 library(gdata) ll() # return a dataframe that consists of a variable name as rownames, and class and size (in KB) as columns subset(ll(), KB > 1000) # list of object that have over 1000 KB ll()[order(ll()$KB),] # sort by the size (ascending)