finalize

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 finalize method will only be invoked once the object has been fully initialized via the initialize method. If an exception is raised inside the initialize method, finalize won't be invoked. If your class defines a finalize method, be sure to catch any exceptions that might be raised in the initialize methods and free resources.

  • Allocating any new object instances during garbage-collection might result in undefined behavior and most likely crashing your program.

To the extent possible under law, the persons who contributed to this workhave waived
all copyright and related or neighboring rights to this workby associating CC0 with it.
https://crystal-lang.org/docs/syntax_and_semantics/finalize.html

在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号

意见反馈
返回顶部