On 07/07/2009 8:36 PM, Henrik Bengtsson wrote:> Is it possible to (i) clear or (ii) override already registered
> finalizer functions, e.g. reg.finalizer(e, f, add=FALSE) cf.
> on.exit(..., add=FALSE)?
No, but you can have the finalizer function call something else, and
change the thing it calls. E.g.
reg.finalizer(env, function (...) CleanUp(...))
will call CleanUp in the global environment (the environment of the
anonymous finalizer); change that function and the cleanup behaviour
will change.
Duncan Murdoch
>
> Currently:
>
>> env <- new.env()
>> reg.finalizer(env, function(...) cat("Finalizer A!\n"))
> NULL
>> reg.finalizer(env, function(...) cat("Finalizer B!\n"))
> NULL
>> reg.finalizer(env, function(...) cat("Finalizer C!\n"))
> NULL
>> gc()
> used (Mb) gc trigger (Mb) max used (Mb)
> Ncells 115827 3.1 350000 9.4 350000 9.4
> Vcells 77109 0.6 786432 6.0 370917 2.9
>> rm(env)
>> gc()
> Finalizer C!
> Finalizer B!
> Finalizer A!
> used (Mb) gc trigger (Mb) max used (Mb)
> Ncells 115932 3.1 350000 9.4 350000 9.4
> Vcells 77648 0.6 786432 6.0 370917 2.9
>
> I wish to have only finalizer "C" to run.
>
> /Henrik
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel