JD *_*ong 171
前段时间我从这里偷走了这个小金块:
sort( sapply(ls(),function(x){object.size(get(x))}))
Run Code Online (Sandbox Code Playgroud)
它对我有好处
dou*_*oug 43
1. 按物体大小
要在逐个对象的基础上获取内存分配,请调用object.size()并传入感兴趣的对象:
object.size(My_Data_Frame)
Run Code Online (Sandbox Code Playgroud)
(除非传入的参数是变量,必须引用它,否则包含在get调用中.)变量名,然后省略引号,
你可以遍历你的命名空间并获得其中所有对象的大小,如下所示:
for (itm in ls()) {
print(formatC(c(itm, object.size(get(itm))),
format="d",
big.mark=",",
width=30),
quote=F)
}
Run Code Online (Sandbox Code Playgroud)
2. 按对象类型
要按对象类型获取命名空间的内存使用情况,请使用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
Run Code Online (Sandbox Code Playgroud)
(还有另一个函数,memory.size(),但我听说过它只能在Windows上运行.它只返回一个以MB为单位的值;所以为了在会话中的任何时候获得最大内存,请使用memory.size (最大值= T)).
Dir*_*tel 21
你可以尝试这个问题的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>
Run Code Online (Sandbox Code Playgroud)
Bla*_*ard 13
这个问题已经发布并且很久以前得到了合法的答案,但是我想让你知道另一个有用的技巧,用一个名为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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
65168 次 |
| 最近记录: |