为了在R中保存内存,我应该重写现有变量吗



不太熟悉R中的GC,只是想知道如果我覆盖R中的现有变量,它是否可以节省一些内存。例如,一个大向量添加1:

aa <- rnorm(100000)
# method 1: create a new variable
bb <- aa + 1
# method 2: overrite previous variable
aa <- aa + 1

方法1创建了一个新变量,并占用了一些内存。方法2呢,它需要更多的记忆吗?

您可以使用lobstr包(它取代了pryr(来探索R中的内存使用和垃圾收集。这里有很多内容,但简单的答案是,覆盖现有变量所占用的额外内存比创建新变量所占的要少得多。由于lobstr中没有mem_change功能,因此我在下面使用pryr

library(pryr)
aa <- rnorm(100000)
# method 1: create a new variable
mem_change(bb <- aa + 1)
#> 805 kB
# method 2: overrite previous variable
mem_change(aa <- aa + 1)
#> 528 B

最新更新