Perl5オブジェクトは、自己参照構造がない限り、オブジェクトへの最後の参照がなくなるとすぐに破棄されます(興味深い情報については、デストラクタとその後の2フェーズのガベージコレクションの段落を参照してください)。
自己参照がない場合は、何も心配する必要はありません。必要なDESTROY
ときにメソッドが呼び出されます。自分でオブジェクトを破壊しようとすることは安全ではありません(オブジェクトが他の場所で参照されていないことをどのように確認できますか)。そんなに良い考えではありません)。
したがって、循環参照がない限り、次のようになります。
- コード内の特定のポイントで外部リソースを解放する場合は、
release
/// whateverメソッドを使用して明示的に解放します(コードでも呼び出すことができます)。close
dispose
DESTROY
- そのリリースがコード内のその時点で正確に発生することを本当に気にしない場合は、最終的に呼び出されるだけで、心配する必要はありません。
- perlオブジェクト自体について心配する必要はありません。
循環参照がある場合は、もっと注意する必要があり、弱い参照(を参照Scalar::Util
)を使用して循環を中断します。
(言い換えれば、delete
perlオブジェクトを明示的に作成する方法がわかりません。これは、参照カウントされたガベージコレクションシステムではうまく機能しません。)