
Last chance! 50% off unlimited learning
Sale ends in
Finalizer methods are called just the moment before the object is about to be deleted by the garbage collector.
If creating a custom finalize()
method for a subclass
in a package, then it needs to be exported in the NAMESPACE of
that package. If not, it will not be found nor called and
there will be no error message.
A finalizer method should never be called explicitly!
# S3 method for Object
finalize(this, ...)
Not used.
For more information see Object
.
# NOT RUN {
setConstructorS3("MyClass", function() {
extend(Object(), "MyClass")
})
setMethodS3("finalize", "MyClass", function(this, ...) {
cat(as.character(this), "is about to be removed from the memory!\n")
})
o <- MyClass()
o <- MyClass()
o <- MyClass()
o <- MyClass()
gc()
## MyClass: 0x01BE602C is about to be removed from the memory!
## MyClass: 0x01BFF634 is about to be removed from the memory!
## MyClass: 0x01C13584 is about to be removed from the memory!
## used (Mb) gc trigger (Mb)
## Ncells 229903 6.2 467875 12.5
## Vcells 53725 0.5 786432 6.0
rm(o)
## MyClass: 0x01C578B0 is about to be removed from the memory!
## used (Mb) gc trigger (Mb)
## Ncells 229903 6.1 467875 12.3
## Vcells 53725 0.5 786432 6.0
# }
Run the code above in your browser using DataLab