問題タブ [finalization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
281 参照

delphi - ユニットがメモリからアンロードされる前にオブジェクトを解放しなくても大丈夫ですか (ファイナライズ セクション)?

プロセスは OS によって強制終了され、割り当てられたすべてのメモリはとにかくリサイクルされるため、ユニットのファイナライズ セクションでオブジェクト/リソースを解放しなくても問題ありませんか?

例えば、

0 投票する
1 に答える
195 参照

c# - ファイナライズとジェネレーション 1 への昇格

私の質問は、ジェネレーション 0 にオブジェクトがあり、ファイナライズ メソッドもオーバーライドしたことです。

gc が gen0 を収集すると、ファイナライズする必要があることがわかり、すぐに解放せず、これらのオブジェクトを gen1 に昇格させますか? したがって、これらは gc が gen1 を収集する場合にのみ解放されます。これらのオブジェクトが再び使用されないと仮定すると、それらはガベージです

ありがとう!

0 投票する
1 に答える
1212 参照

c# - ファイナライズハンドルはメモリに残ります。この参照を削除するには?

アプリケーションのメモリ使用量を最適化する必要があります。だから私は.netパフォーマンスプロファイラーを使用しました...しかし、私のアプリケーションのいくつかの参照はまだ生きていて、強制的に収集してもGCによって収集されません。

生きている参照は「ファイナライズハンドル」タイプです。この種の参照を削除するために何をすべきかわかりません....助けてください。

この写真は私が意味するものです

0 投票する
0 に答える
107 参照

gcc - コンパイル エラー GNU Fortran - ファイナライズ

GNU コンパイラを使用して大きなコードをコンパイルしようとしています。ただし、添付のコードを GNU Fortran (GCC) 6.1.0 でコンパイルしようとすると、型を使用する一部のルーチンでfn_grid_nodes_t次のエラー メッセージがスローされます。

@bld .. リンク中 ... アーキテクチャ x86_64 の未定義シンボル:
"___final_fn_core_grids_dts_Fn_grid_nodes_t.3665"、参照元: fn_depot_utils.o の ___fn_depot_utils_MOD_fn_clean_depot

Intel コンパイラ > 15.0 を使用すると、コンパイルが成功することに注意してください。GNU と Intel がファイナライズを処理する方法が原因であると思われます。

これに関する提案/回避策はありますか?

ご回答ありがとうございます - 追加の詳細:

  • OS = MacOS シエラ 10.12.1
  • コンパイル: Makefile
  • フラグ: -g -Wall -Wextra -fbacktrace -fbounds-check -fcheck-array-temporaries
  • 最適化: -O2

モジュールのコンパイル例:

問題の原因となっているメイクファイルの一部:

fn_depot_common.mod にはモジュール fn_core_grids_dts が含まれていることに注意してください。欠落しているモジュールが必要な場所に含まれていないことに関連する問題ではありません。

0 投票する
1 に答える
436 参照

java - null キューを持つ PhantomReference

Java は次のように書くことができます:

この場合new Object()は回収されますか?

私が理解しているように、ファントム参照はfinalize() メソッド使用の代替です。

そして、キューに参照が表示された後、いくつかの追加アクションを実行してから実行する必要がありますclear()

Java doc はそのままです:

null キューを使用してファントム参照を作成することは可能ですが、そのような参照はまったく役に立ちません。その get メソッドは常に null を返し、キューを持たないため、キューに入れられることはありません。

エンキューされない場合はどういう意味ですか?

私が理解しているように、メソッドの呼び出しを終了した後、参照が referenceQueue に追加されないことを意味します。
1. オブジェクト メモリがすぐにクリアされる2.
オブジェクト メモリがクリアされない

どの場合が正しいですか?