RAM会重新创建一个ratser对象

时间:2016-10-27 17:36:57

标签: r memory garbage-collection ram rm

使用raster包时,出现了一些与RAM相关的问题。我遇到了这个问题,因为我遇到了内存大小问题(unable to allocate vecotr of size ..., 以下是错误消息的示例:     Fehler:kann VektorderGröße2.0GB nicht allozieren     Zusätzlich:Warnmeldungen:     1:在.TfromR(x,transitionFunction,directions,symm)中:      Reached total allocation of 8078Mb: see help(memory.size)

我相信,更多人知道错误信息。所以,我使用rm()从工作区中删除对象。但我仍然遇到内存大小问题。所以我意识到,我的RAM占用了对象,我之前从工作区中删除了这些对象,以避免RAM大小问题。添加gc(),工作。请参阅此问题,了解gc()rm()What is the difference between gc() and rm()

之间的区别

但是:在循环中创建和重写相同的光栅时监视RAM时,占用的RAM会增加。在下面的代码中,是一个示例,其中创建了39次栅格并且描绘了memory-size()

bev=c()
nach=c()
bev=memory.size()
plot(0,bev,xlim=c(0,42),ylim=c(bev-bev/10,bev+bev/10))

for(i in 1:39){
  r1 <- raster(nrows=1080, ncols=210, xmn=0, xmx=10)
  nach=memory.size()
  points(i,nach,col="blue", pch=1)
}

for(i in 1:39){
  r1 <- raster(nrows=1080, ncols=210, xmn=0, xmx=10)
  rm(r1)
  nach=memory.size()
  points(i,nach,col="green", pch=3)
}

for(i in 1:39){
  r1 <- raster(nrows=1080, ncols=210, xmn=0, xmx=10)
  rm(r1)
  gc()
  nach=memory.size()
  points(i,nach,col="red", pch=4)
  r1 <- raster(nrows=1080, ncols=210, xmn=0, xmx=10)
}

rm(r1)
nach=memory.size()
points(i+1,nach,col="green", pch=19)
Sys.sleep(5)
nach=memory.size()
points(i+2,nach,col="black", pch=19)

gc()
nach=memory.size()
points(i+3,nach,col="red", pch=19)
legend("bottomright", cex=0.7, legend=c("Loop crating r1", "loop removing r1", "loop using gc()"),pch=c(1,3,4), col=c("blue", "green", "red"))

这里,结果图: Figure of memory size

为什么会这样?你可能已经意识到,我对R很新。有人可以向我解释一下吗?!

操作系统:Windows 10(64); R:3.3.1(64)

0 个答案:

没有答案