R中的mem_change在删除向量时应为负数



这里有一个reprex:

> pryr::mem_change(x<- 1:1e7)
Registered S3 method overwritten by 'pryr':
method      from
print.bytes Rcpp
11.5 kB
> pryr::mem_change(rm(x))
592 B
> 

我的查询是,当我执行mem_change(rm(x((时,我应该得到一个负数,因为使用的内存应该会减少。为什么我的592 B呈阳性?

# Trying to recreate Irina's code on my computer
> library(pryr)
Registered S3 method overwritten by 'pryr':
method      from
print.bytes Rcpp
> mem_used()
37.2 MB
> mem_change(x<-1:1e7)
12.8 kB
> mem_used()
37.4 MB
> mem_change(rm(x)) # This should be negative, but it's not
592 B
> mem_used()
37.4 MB
> 

您应该mem_used()来查看您现在的内存有多大。然后当你mem_change(x<- 1:1e7)时,你扩展了向量x的内存。mem_change(rm(x))只会移除这个向量,并将您带回初始内存大小。将有助于阅读包"pryr"作者Hadley Wickham

> mem_used()  # how much you use now
253 MB
> pryr::mem_change(x<- 1:1e7)   # add 40MB
40 MB
> mem_used()   # now you have 253 + 40 = 293 MB
293 MB
> mem_change(rm(x))   # deleting 40MB
-40 MB
> mem_used()   # you should see the oroginal memory size.
253 MB

最新更新