問題タブ [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.
c# - .Netでのファイナライズのコスト
(1)IDisposableに関する多くの質問を読みましたが、処理時間がかかるために本当に必要な場合を除いて、Finalizeを使用しないことをお勧めします。
私が見たことがないのは、この費用がいくらで、どれくらいの頻度で支払われるかです。ミリ秒ごと?2番目?時間、日など
(2)また、オブジェクトを破棄できるかどうかが常にわからない場合は、Finalizeが便利だと思います。たとえば、フレームワークのフォントクラスです。フォントが共有されているかどうかがわからないため、コントロールはそれを破棄できません。フォントは通常、デザイン時に作成されるため、ユーザーはそれを破棄する必要がありません。したがって、参照が残っていない場合は、ファイナライズキックインで最終的にフォントを削除します。それは正しい印象ですか?
.net - .NET ファイナライズの概念の問題
finalize compare を dispose に使用しない方が本当に良いですか? 最初の解析で管理されていないリソースを削除しますか?
finalize を抑制するとは何ですか?
java - Javaのファイナライズメソッドの関数宣言とは?
ファイナライズのコードを 1 か月近く検索してきました。コードについて教えてください。前もって感謝します。
java - Java インタビューの質問: finalize() メソッド
インタビューで次の言葉をもらいました。
オブジェクトの finalize() メソッドの呼び出しは、オブジェクトがガベージ コレクションされる前に行われる最後の処理です。
私は次のように答えなければなりませんでした:
- 真実
- 間違い
選んTrue
だけどダメだった。理由を教えてください。
java - Cipher.do最終出力サイズ
javax.crypto を使用して Java で AES CBC 復号化を行っています。次の Cipher クラス メソッドを使用しています。
public final void init (int opmode, Key key, AlgorithmParameters params)
初期化の方法、final int update(byte[] input, int inputOffset, int inputLen, byte[] output)
データを復号化する方法、- 最後に、メソッドを呼び出して
final int doFinal(byte[] output, int outputOffset)
復号化を完了します。
私の質問は次のとおりです:doFinal
呼び出しによって返されるデータのサイズが常に AES ブロック サイズ以下であると仮定できますか? ドキュメントでは、doFinal メソッドを次のように説明しています。
「マルチパート変換 (暗号化または復号化) を終了します。以前の更新呼び出しでバッファリングされた可能性のあるバイトを処理します。最終的に変換されたバイトは、出力バッファーに格納されます。」</p>
しかし、出力バッファに最大で 1 ブロックのデータが含まれるとはどこにも書かれていません。これが AES API の一般的な動作であることは理解していますが、これは私のコードがこれまで示してきた動作ですが、この仮定は常に成り立つのでしょうか?
c# - オブジェクトに dispose または finalize を実装する必要がありますか?
あまりにも長い間、私はガベージ コレクターにその魔法を任せ、自分自身からすべての責任を取り除きました。
悲しいことに、それが問題になることはありませんでした.
今考えてみると、「破棄」機能が実際に何をするのか、いつどのように実装する必要があるのか よくわかりません。
ファイナライズの同じ質問...
そして最後の質問...私はクラスpictureManipulationを持っています:保存/サイズ変更/フォーマットの変更が必要なとき...私はそのクラスの新しいインスタンスを開始し、そのオブジェクトを使用します...まあ、ガベージコレクションにインスタンスを強制終了させます
.net - .net でのファイナライズと破棄の違いは何ですか?
重複の可能性:
Finalize と Dispose
やあ、
最近、インタビューでファイナライズとディスポーズについて質問されました。それらのそれぞれがいつ使用され、ガベージコレクターはそれらにどのように関連していますか。このトピックについてさらに啓発するために、リンクを共有してください。
親切に共有...
前もって感謝します。
c# - 従来の Dispose パターンがファイナライズを抑制するのはなぜですか?
これを従来の Dispose パターンと仮定します (devx から取得しましたが、多くの Web サイトで見られます)。
を呼び出す理由がわかりませんGC.SupressFinalize(this)
。これには、参照を無効にするなど、独自の管理対象リソースの破棄を記述する必要がありますか? 私は少し迷っています、認めなければなりません。誰かがこのパターンに光を当てることができますか?
理想的には、管理されていないリソースのみを破棄し、GC に管理された収集を単独で実行させたいと考えています。
実際、ファイナライザーを指定する理由もわかりません。いずれにせよ、コーダーは自分で dispose を呼び出す必要があります。それが単なるフォールバック メカニズムである場合は、削除します。
android - アプリがクラッシュしたときに Android リソースを解放する方法
私は Android AudioRecord アプリを使用しています。release()
スクリプトの最後で AudioRecord オブジェクトのメソッドを呼び出さないと、電話を再起動するまで正しく動作しません。
アプリがクラッシュした場合 (テスト中に時々発生し、予期しないバッファー オーバーフローが発生した場合など)、毎回電話を再起動する必要があるため、このプロジェクトに取り組んでいるとき、これは大きな問題になります。
finalize()
AudioListener クラスのメソッド内にバッファを解放するメソッドがあり、それらonStop()
をメインのアクティビティからも呼び出します。
アプリがフリーズまたはクラッシュすると、これらのどちらも機能しないようです。リリース アクションをエラー ハンドラーにアタッチする方法や、アプリがコードを実行してクラッシュ後でもリソースを適切に解放することを保証する一般的な方法はありますか。
助けてくれてありがとう。
ada - Finalizeへの複数の呼び出しを引き起こすにはどうすればよいですか?
最近のAdaCoreGemには、次のような声明があります。
Finalizeの実装は少し複雑です。Adaリファレンスマニュアルには、Finalize手順は常にべき等である必要があることが示されています。Adaコンパイラは、特に例外が発生した場合に、同じオブジェクトに対してFinalizeを複数回自由に呼び出すことができます。
私が制御するタイプをテストする必要があります、
ソースを変更して、タイプを視覚的に制御できるようにすることができます
そして、ただ電話しますFinalize (My_T);
(またはMy_T.Finalize
?); しかし、テスト対象のソフトウェアにこの変更を加えることなく、複数のファイナライズを引き起こす方法はありますか?