考虑这两段代码。第一个,一切正常,R的内存使用稳定:
for (i in 1:100) {
x <- rnorm(1000000)
write.table(x, file="test", col.names=F, append=T)
}
现在考虑这个相关的代码,我从世界银行那里抓取一些经济指标的信息。在这里,内存使用量随着循环的迭代而上升:
library(RCurl)
library(XML)
for (i in 1:26) {
x <- getURL(paste("http://api.worldbank.org/countries/all/indicators/AG.AGR.TRAC.NO?per_page=500&date=1960:2012&page=", as.character(i), sep=""))
x <- xmlToDataFrame(x)
write.table(x, file="test", col.names=F, append=T)
}
从写入数据的角度来看,这两个片段有什么区别,如何确保第二个片段正确释放内存?