方案一:
library(pryr)
for (x in 1:3) {
print(c(address(x), refs(x)))
}
输出例如:
[1] "0x7a6a6c8" "1"
[1] "0x7a6a6c8" "1"
[1] "0x7a6a6c8" "1"
方案二:
library(pryr)
for (x in 1:3) {
print(c(address(x), refs(x)))
print(x)
}
输出例如:
[1] "0x7ae0298" "1"
[1] 1
[1] "0x7ae88c8" "1"
[1] 2
[1] "0x7af2668" "1"
[1] 3
显然,程序 2 中 x 的值是在变化的,但是为什么地址也发生了变化呢?当 for 循环运行大约 500,000,000 次而在循环期间不调用 gc 时,这会导致内存泄漏吗?