當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。