next | previous | forward | backward | up | top | index | toc | Macaulay2 website
Macaulay2Doc > The Macaulay2 language > system facilities > registerFinalizer

registerFinalizer -- register a string that will be displayed when an object is garbage collected

Synopsis

Description

i1 : for i from 1 to 9 do (x := 0 .. 10000 ; registerFinalizer(x, "-- finalizing sequence #"|i|" --"))
--finalization: (1)[0]: -- finalizing sequence #1 --
--finalization: (2)[1]: -- finalizing sequence #2 --
i2 : collectGarbage() 
--finalization: (3)[2]: -- finalizing sequence #3 --
--finalization: (4)[5]: -- finalizing sequence #6 --
--finalization: (5)[4]: -- finalizing sequence #5 --
--finalization: (6)[3]: -- finalizing sequence #4 --
--finalization: (7)[6]: -- finalizing sequence #7 --
--finalization: (8)[7]: -- finalizing sequence #8 --
--finalization: (9)[8]: -- finalizing sequence #9 --

Caveat

This function should mainly be used for debugging. Having a large number of finalizers might degrade the performance of the program. Moreover, registering two or more objects that are members of a circular chain of pointers for finalization will result in a memory leak, with none of the objects in the chain being freed, even if nothing else points to any of them.

See also

For the programmer

The object registerFinalizer is a compiled function.