3

将来、Delphiに自動ガベージコレクターを導入することを考えることはできますか?オブジェクトを解放するタイミングを詳細に制御することはそれほど重要ではなく、気にする必要があるだけのアプリケーションがたくさんあります。

Javaのように機能する一種のガベージコレクターを持つそのようなアプリケーションにとっては興味深いでしょう。

プロジェクトオプションで設定できます。

これは可能かどうか?

注:ここで説明するように手動で作成するつもりはありません。実際にはDelphiの機能を意味します。

別の言い方をすれば、FastMMをガベージコレクターとして機能するように設定することは可能ですか?

4

5 に答える 5

7

オブジェクトを解放するタイミングを詳細に制御することはそれほど重要ではなく、気にする必要があるだけのアプリケーションがたくさんあります。

そのようなアプリケーションはほとんどないと思います。ほとんどの場合、オブジェクトがいつ破棄されるかを制御する必要はないと思うので、バグが発生している可能性があります。

現在、特定のオブジェクトを無視して、後で自動コレクターで処理できる場合があります。ただし、手動で破棄しないことを計画しているすべてのオブジェクトについて、これを熟考する必要があることに注意してください。それがいくつかのロックを保持している場合はどうなりますか?いくつかのファイルが開いている場合、おそらく共有拒否モードである場合はどうなりますか?

すべてのオブジェクトを破壊することを考える必要がないという利点はあまりありません。安全にプログラムする場合でも、すべてのオブジェクトを破壊することを考える必要があります。

ガベージコレクターの目的は、プログラマーがこのようなものを見ることから解放することではありません。参照カウントとtry/finally呼び出しを少し節約することです。

于 2010-10-21T15:10:15.713 に答える
6

ガベージ コレクションは C および C++で可能であるため、Delphi にもそのような機能を持たせない理由はありません。指を交差させて十分に待つと、Delphi はガベージ コレクションを取得する可能性があります。ただし、エンバカデロの優先事項とは考えていません。

FastMM はガベージ コレクションを実行しないため、FastMM をガベージ コレクタとして機能するように設定することはできません。したがって、設定するものは何もありません。Delphi の仮想的な将来のガベージ コレクション機能は、おそらくメモリ マネージャと連携する必要があるため、そのような機能が存在し、その時点で FastMM がまだメモリ マネージャである場合、FastMM はおそらくいくつかの設定を取得します。

于 2010-10-21T15:31:48.667 に答える
1

ガベージ コレクションには長所と短所の両方があります。GC(ガベージ コレクタ)がなくても Delphi は優れていると思います。Delphi アプリでさえ、管理された .net アプリよりもメモリ サイズが少なくて済みます。不要なリソースを見つけて、それらが再び必要かどうかを確認し、削除する必要があるため、ガベージ コレクションによってプロセスが遅くなる場合もあります。再度必要な場合は、再度ロードする必要があります。 (アプリが遅くなる)またはそこにエラーがあるため、GC を手動で解放しなくても Delphi が適切であり、プロのプログラマーに適しています

于 2010-10-21T16:03:22.333 に答える
0

しかし、dot net 2007 用の delphi およびその他の古い delphi dot net にはガベージ コレクタ + vcl がありますが、現在は廃止されています (ガベージ コレクタも 100% うまく機能しません)。

于 2010-10-21T15:34:47.927 に答える
0

RTTI に付属する Delphi の持続バージョン (これもアプリのサイズが大きい理由です) は、rtti(Runtime Type Information) が将来的に役立つと思います。進行中のプロセスに関するいくつかの情報を保持しているため、将来的にはガベージコレクターのような同様の機能が可能になると思いますが、わかりません

于 2010-10-21T15:30:06.223 に答える