C++では、オブジェクトを明示的に破棄する方法(ポインタとして定義されている場合には明示的な破棄が必要となります。)としてあるいは、メソッド終了後にオブジェクトを破棄する為にデストラクタがサポートされています。一方、GCを持つJavaの場合には、GCがオブジェクトを破棄しますのでデストラクタはサポートされとらず代わりに、GCがオブジェクトを回収する前に呼び出されるメソッドとしてファイナライザがサポートされます。

.Net Frameworkでは、 デストラクタとファイナライザの双方に対応しており、言語によって対応状況などに差がありますので下記の表に纏めてみました。(デストラクタではアンマネージドリソースが破棄され、GCがマネージドリソースを回収する前にファイナライザが呼び出されます。)

表.1
Dispose メソッド Finalize メソッド
Managed C++ Dispose() TypeName()
C++/CLI TypeName() !TypeName()
C# Dispose() TypeName()
VB.Net Dispose() Finalize()
J# Dispose() Finalize()

タグ:

+ タグ編集
  • タグ:
最終更新:2006年09月12日 00:50