問題タブ [finalize]

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 投票する
6 に答える
1759 参照

java - 別のパッケージの他のサブクラスで finalize() メソッドにアクセスできるのはなぜですか?

私はJavaが初めてで、初めてJavaを学ぼうとしています。私の簡単な質問は、java.lang.Object の finalize() メソッドに関するものです。他の保護されたメソッドではなく、他のクラスでこの唯一の保護されたメソッドにアクセスできるのはなぜですか。ここで私はこれを読みました。

finalize()method には特別なケースがあるのでしょうか。ここでfinalize () が保護されている理由を満足できない答えがあります。 私のコードは次のとおりです。

finalize() の場合にのみ呼び出され、別のケースでは呼び出されません。私の家庭教師に尋ねると、彼はあなたが何か間違いをしていると言っていましたが、彼は私に返事をしていません。

私は Java に慣れていると考えてください。たぶん私は何か大きな間違いをしている。

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

java - Java ファイナライズ メソッドで無限ループまたはデッドロックが発生した場合、ファイナライザ スレッドは何をしますか

Java ファイナライズ メソッド無限ループまたはデッドロックが発生した場合、ファイナライザ スレッドはどうなりますか。

0 投票する
2 に答える
2938 参照

mongodb - MongoDB Map Reduce - ファイナライズして一部の結果をスキップする

次のようにコレクションで機能する map reduce 関数があります。

私がやろうとしているのは、Finalize が特定のしきい値 (たとえば、count>10) を超えるオブジェクトのみを返すことです。現在、オブジェクトはまだ返されており、カウントは null です。

何か案は?

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

java - スローされた例外を無視する Object.finalize() メソッド

このAPIから直接:

捕捉されなかった例外が finalize メソッドによってスローされた場合、その例外は無視され、そのオブジェクトのファイナライズは終了します。

次のようにオーバーライドした後、 finalize() を明示的に呼び出そうとしました。

例外を取得しても明示的に呼び出すと、一方、暗黙的にそれを手放すと、期待どおりに例外を無視してうまくいきます。

なぜそれが起こるのですか?APIを使用する最初の方法でSystem.gc()は尊重され、明示的に呼び出された場合は尊重されないのはなぜですか?

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

android - Android finalize() および System.exit()|System.gc()

ガベージ コレクターと Object.finalize() について質問があります。finalize メソッドを実装するクラスを作成しました。アプリを実行して DDMS で強制的に GC を実行すると、参照が残っていないクラスのオブジェクトで finalize が呼び出されます。しかし、アプリ内で System.gc() を呼び出すと、 finalize は呼び出されません。アプリを終了するときに System.exit(0) を呼び出しても、ファイナライズは発生しません。finalize が呼び出されないのはなぜですか?

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

c# - ガベージ コレクションの概念

Finalize() -この関数は、ガベージ コレクション プロセス中にのみ管理されていないリソース
をクリーンアップします。このメソッドが実際にいつ実行されるかはユーザーにはわかりません。また、ユーザーはこの関数を直接呼び出してメモリをクリーンアップすることもできません。

Dispose() -
IDisposable インターフェイスを実装することにより、ユーザーは UnManaged Resources をクリーンアップでき、リソースがいつ解放されるかを正確に知ることができます。

私の理解では、Finalize() をオーバーライドしてアンマネージド リソースをクリーンアップすることはできません。
これは、管理されていないリソースのクリーンアップに使用される「GC」プロセス専用のシステム プロセスです。
ユーザーが自分でリソースをクリーンアップする必要がある場合は、IDisposable インターフェイスを実装し、Dispose() を明示的に呼び出す必要があります。他の可能性はありません!
管理されていないリソースのクリーンアップのベスト プラクティスは、'USING' ステートメントを使用することです。

質問 1: 私の理解は正しいですか? 私が間違っている場合は、上記のステートメントで私を修正してください。

質問 2: また、知りたかったのですが、 IDisposable インターフェイスを実装し、Dispose() を呼び出すことによって、マネージド リソースをクリーンアップできますか?

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

.net - クリーンアップにファイナライズを使用しないことが好まれるのはなぜですか? 。ネット

(Windows API で作成されたオブジェクト、ファイル、データベース接続オブジェクト、COM オブジェクトなど) は、.NET Framework の範囲外です。リソースを明示的にクリーンアップする必要があります。これらの種類のオブジェクトに対して、.NET Framework はObject.Finalizeメソッドを提供します。このメソッドは、アンマネージ リソースのコードをオーバーライドしてクリーンアップできます...

  1. クリーンアップにファイナライズを使用しないことが好まれるのはなぜですか?

  2. 何を使うのが適切ですか?

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

java - ゲッターで新しいオブジェクトを作成し、VM に収まらないようにしました

アイテム、ツールなどをリクエストするための非常にシンプルなアプリケーションを作成しました。データベースを使用して、このすべての情報を保存しました。私の求人マネージャー クラスは、データベースからの情報を使用して求人の新しいインスタンスを返す getter を使用します。この新しいオブジェクトは永遠にスタックに残りますか? どうすれば強制的に収集できますか? 新しいオブジェクトを作成せずに関数を作成するにはどうすればよいでしょうか?

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

java - Finalize メソッドの SOP が次のプログラムの結果に表示されないのはなぜですか? 説明してください。

0 投票する
2 に答える
605 参照

java - Java finalize() をいじる

到達不能なオブジェクトを見つけた後、JVM gc がそのオブジェクトの finalize() メソッドを実行することを読みました。次に、オブジェクトがまだ到達できないかどうかを確認し、そうでない場合は削除します。そこで、オブジェクトの参照を再び利用できるようにするファイナライズを作成しました。

主な方法は次のとおりです。

「A stuff is finalized」が標準出力に表示されるため、gc が実行されますが、その後メインの printline で IndexOutOfBoundsException がスローされます。これを機能させることはできますか?

私は通常、ファイナライズをまったく使用しません。ファイナライズがオブジェクトの参照を再び利用可能にすることができるかどうかを確認するのは興味深いと思いました。これを機能させることはできますか?