Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R中的mem_变化,在删除向量时应为负值_R_Memory - Fatal编程技术网

R中的mem_变化,在删除向量时应为负值

R中的mem_变化,在删除向量时应为负值,r,memory,R,Memory,这是一个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 > >pryr::mem_change(x pryr::mem_change(rm(x)) 592 B > 我的问题是,当我做mem_cha

这是一个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
> 
>pryr::mem_change(x pryr::mem_change(rm(x))
592 B
> 
我的问题是,当我做mem_change(rm(x))时,我应该得到一个负数,因为使用的内存应该会减少。为什么我会得到一个正的592b

# 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
> 
#尝试在我的计算机上重新创建Irina的代码
>图书馆(普赖尔)
已注册的S3方法被“pryr”覆盖:
方法自
print.bytes Rcpp
>mem_used()
37.2 MB
>mem_变化(x mem_使用()
37.4 MB
>mem_change(rm(x))#这应该是负数,但不是
592 B
>mem_used()
37.4 MB
> 
你应该
mem\u used()
看看你现在的内存有多大。 然后当你
mem_change(x mem_used()#你现在用了多少
253MB
>pryr::mem_change(x mem_used()#现在您有253+40=293 MB
293MB
>内存更改(rm(x))#删除40MB
-40 MB
>mem_used()#您应该看到原始内存大小。
253MB

你的内存更改(rm(x))是负数。在我的计算机上不是。为什么是这样?这是我最初的查询。在你的计算机上,我认为它工作得很好,但在我的计算机上不是。它不是负数,它是“减去40 MB”=它只是显示已采取的措施:从现有内存中删除/减去40 MB,“rm”在你的问题中,592b也被减少了,因为它是11.5kb,1kb=1024字节,在我的查询中它不应该是“减去592b”吗?
> 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