If a class defines a
finalize method, when an instance of that class is
garbage-collected that method will be invoked:
class Foo def finalize # Invoked when Foo is garbage-collected # Use to release non-managed resources (ie. C libraries, structs) end end
Use this method to release resources allocated by external libraries that are not directly managed by Crystal garbage collector.
finalizemethod will only be invoked once the object has been fully initialized via the
initializemethod. If an exception is raised inside the
finalizewon't be invoked. If your class defines a
finalizemethod, be sure to catch any exceptions that might be raised in the
initializemethods and free resources.
Allocating any new object instances during garbage-collection might result in undefined behavior and most likely crashing your program.