/>
小さな工夫と発見の蓄積
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ただいまコメントを受けつけておりません。
library(R6)
A <- R6Class('A',
public = list(
number=NA,
initialize = function(number) {
self$number <- number
reg.finalizer(
self,
function(e) cat('Garbage collected! #', e$number, '\n'),
onexit = TRUE
)
}
)
)
a <- list(A$new(1), A$new(2), A$new(3))
gc() # clean up the garbage created when initializing
# when the list is removed, all three instances are 'garbage'
rm(a)
gc()
#Garbage collected! # 3
#Garbage collected! # 2
#Garbage collected! # 1
# used (Mb) gc trigger (Mb) max used (Mb)
#Ncells 567894 30.4 1168576 62.5 1168576 62.5
#Vcells 821924 6.3 2994598 22.9 54470995 415.6
a <- list(A$new(1), A$new(2), A$new(3))
gc()
# remove the reference to the 1st element.
a <- a[-1]
gc()
#Garbage collected! # 1
# used (Mb) gc trigger (Mb) max used (Mb)
#Ncells 567896 30.4 1168576 62.5 1168576 62.5
#Vcells 821917 6.3 2994598 22.9 54470995 415.6
# let another variable refer to the first element
b <- a[[1]]
rm(a)
gc()
#Garbage collected! # 3
# used (Mb) gc trigger (Mb) max used (Mb)
#Ncells 567879 30.4 1168576 62.5 1168576 62.5
#Vcells 821913 6.3 2994598 22.9 54470995 415.6