当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R gc 垃圾收集


R语言 gc 位于 base 包(package)。

说明

调用 gc 会导致发生垃圾回收。 gcinfo 设置一个标志,以便自动收集或者静默(verbose = FALSE),或者打印内存使用统计信息(verbose = TRUE)。

用法

gc(verbose = getOption("verbose"), reset = FALSE, full = TRUE)
gcinfo(verbose)

参数

verbose

逻辑性;如果是 TRUE ,则垃圾收集会打印有关 cons 单元和为向量分配的空间的统计信息。

reset

逻辑性;如果TRUE,则使用的最大空间值将重置为当前值。

full

逻辑性;如果TRUE执行完整收集;否则只能收集最近分配的对象。

细节

调用 gc 会导致发生垃圾回收。这也将自动发生,无需用户干预,调用 gc 的主要目的是报告内存使用情况。为了获得准确的报告,应使用full = TRUE

拨调用可能会有用gc删除大物体后,因为这可能会提示R将内存返回给操作系统。

R以 8 字节的倍数为向量分配空间:因此报告为"Vcells",早期分配器(使用向量堆)的遗迹。

gcinfo(TRUE) 生效时,消息会在表单的每次垃圾回收时发送到消息连接

    Garbage collection 12 = 10+0+2 (level 0) ...
    6.4 Mbytes of cons cells used (58%)
    2.0 Mbytes of vectors used (32%)

这里最后两行给出了当前内存使用量四舍五入到下一个 0.1Mb 以及当前触发值的百分比。第一行给出了各个级别的垃圾收集数量的详细信息(有关解释,请参阅“R 内部”手册)。

gc 返回一个矩阵,其中包含行 "Ncells"(cons 单元),通常在 32 位系统上每行 28 个字节,在 64 位系统上每行 56 个字节,以及 "Vcells"(向量单元,每个 8 个字节)和列 "used""gc trigger" ,每个也以兆字节为单位解释(四舍五入到下一个 0.1Mb)。

如果为 "Ncells""Vcells" 设置了最大值,则会打印第五列,给出以 Mb 为单位的当前限制(NA 表示没有限制)。

最后两列显示自上次调用以来使用的最大空间gc(reset = TRUE)(或自R开始)。

gcinfo 返回标志的先前值。

例子


gc() #- do it now
gcinfo(TRUE) #-- in the future, show when R does it
##            vvvvv use larger to *show* something
x <- integer(100000); for(i in 1:18) x <- c(x, i)
gcinfo(verbose = FALSE) #-- don't show it anymore

gc(TRUE)

gc(reset = TRUE)

也可以看看

“R 内部结构”手册。

MemoryR的内存管理,以及gctorture如果你是R开发商。

gc.time() 报告用于垃圾收集的时间。

reg.finalizer 用于垃圾收集时发生的操作。

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Garbage Collection。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。