2

ガベージ コレクションされたオブジェクト指向プログラミング言語は未使用のメモリを自動的に再利用しますが、ファイナライザーが時間内に (またはまったく) 実行されることを信頼できないため、他のすべての種類のリソース (つまり、ファイル、ソケットなど) は手動で解放する必要があります。

したがって、このようなリソース オブジェクトは通常、何らかの「閉じる」または破棄」するメソッド/パターンを提供しますが、これはいくつかの理由で問題になる可能性があります。

  • Disposeは手動で呼び出す必要があり、リソースをいつ解放する必要があるかが明確でない場合に問題が発生する可能性があります (手動のメモリ管理と同様の問題)。
  • 適切なリソースのクリーンアップを保証するために、使い捨てリソースを含む各クラスも使い捨てにする必要があるため、使い捨てパターンはやや「バイラル」です。
  • クラスに使い捨てメンバーを追加すると、クラスも使い捨てになる必要があり、クラスのインターフェイスと使用パターンが変更され、カプセル化が壊れます。
  • 使い捨てパターンは、継承に問題を引き起こします。つまり、派生クラスが処分可能で、基本クラスがそうでない場合です。

では、そのようなリソースを適切に解放するための代替の概念/アプローチはありますか? その方向の論文/研究はありますか?

4

1 に答える 1

-2

1 つの方法 (それをサポートする言語で) は、ガベージ コレクション イベントを手動でトリガーして、ファイナライザーを実行することです。ただし、一部の言語 (Java など) は、そのための信頼できるメカニズムを提供していません。

于 2013-11-10T20:40:38.750 に答える