finalize
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.
Examples of this can be found in IO::FileDescriptor#finalize
or OpenSSL::Digest#finalize.
Notes:
- The - finalizemethod will only be invoked once the object has been fully initialized via the- initializemethod. If an exception is raised inside the- initializemethod,- 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.