なぜスコープ外のjava.awt.Windowをdispose()する必要があるのですか?

スキップホッピー:

アプリケーションで発見したメモリリークの1つは、インスタンス化されたjava.awt.Window.allWindowsすべてを追跡するプライベート静的フィールドWindowです。作成、使用、および忘れられたダイアログボックスがあり、これらは消えてガベージコレクションされることが期待されていました。このプライベートフィールドは、dispose()メソッドが呼び出されるまで、それらを無期限にスコープ内に保持します。そして当然のことながら、彼らが対象範囲外になった場合、それを行うことはできません。

これがこのように設計されている理由がわかりません。Windowオブジェクトの処理が完了したときにシステムに明示的に通知する必要があるのは、ガベージコレクションの精神に反するようです範囲外なので、明らかにそれで終わりです。

私はdispose()メソッドが何をしているのか理解しています:システムピアオブジェクトを取り除くこと。これはJavaの外にあること、そしてそれを行うには何らかの方法が必要であり、Swingがそれらのオブジェクトを追跡するだけでなく、メモリリークが発生しないことを理解しています。しかしWindow、二度とそれを使用するつもりがないときに、自分の周りへの参照を永遠に保つことによって何が達成されますか?

なぜこれが必要なのか誰かが説明できますか?

Powerlord:

私はそれを言うのが嫌いですが、それはGUIが機能する方法です。

ウィンドウは非ブロッキングです。コードで作成すると、コードは引き続き実行されます。

これは、ウィンドウへの参照を他の場所に明示的に保存しない限り、ウィンドウは作成直後にスコープ外になる可能性があることを意味します。この時点では、ウィンドウはまだ画面上にあります。

これはまた、それを使い終わったときにそれを取り除くために他の方法が必要であることを意味します。Window dispose()ウィンドウのリスナーの1つから呼び出すことができるメソッドを入力します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

なぜawt.Dimensionクラスを使用する必要があるのですか?

分類Dev

"sun.awt.exception.handler"プロパティを設定する必要があるのはなぜですか?

分類Dev

actionPerformed(AWT)のBeanCurrentlyInCreationException

分類Dev

なぜjava.awt.Graphics.drawLineが非常に遅いのですか?

分類Dev

java.awt.Dimensionにパブリック変数があるのはなぜですか?

分類Dev

OSXで画像をコピーして貼り付けると、Java8でsun.awt.image.MultiResolutionImageが返されるのはなぜですか。

分類Dev

JButtonでjava.awt.Robotを停止する

分類Dev

この変数がスコープ外にあるのはなぜですか?

分類Dev

java.awt.Desktopの問題

分類Dev

dockerjenkinsのjava.awt.HeadlessException

分類Dev

ScalaではJavaのAWT:(AWT-EventQueueの-0)java.lang.NoClassDefFoundErrorの

分類Dev

AWTでAdjustmentListenerイベントのソースを取得する

分類Dev

java.awt.Shapeを移動するJavaSwing

分類Dev

変数が存在するために、ifステートメントのスコープ外で宣言する必要があるのはなぜですか?

分類Dev

AWT-EventQueue-0の実行

分類Dev

JavaのAWT Robotクラスに相当するPythonはありますか?

分類Dev

画像(java.awt.Image)が色なしの白黒であるかどうかをどのように判断しますか?

分類Dev

スレッド「AWT-EventQueue-0」java.lang.Errorで例外が発生したのはなぜですか?

分類Dev

java.awt.RobotのようなAndroid API

分類Dev

Java.awt.Robotタイプのユニコード文字を作成する方法は?(出来ますか?)

分類Dev

PythonでリソースラッパーのDisposeパターンを実装する必要がありますか?

分類Dev

findでセミコロンをエスケープする必要があるのはなぜですか?

分類Dev

(Java)なぜ一部の人々はまだスイングではなくawtライブラリを使用しているのですか?

分類Dev

ゲーム内のjava.awt.Robot?

分類Dev

SpringBoot統合テストがjava.awt.HeadlessExceptionで失敗する

分類Dev

C、なぜ printf をループの外側ではなく内側に置く必要があるのですか?

分類Dev

AWT / SWINGでポイントの色を探す機能はありますか?

分類Dev

Java AWT Canvasで値が変更されたオブジェクトのみを再レンダリングする方法はありますか?

分類Dev

Androidでjava.awt.geom.Areaに相当するものは何ですか?

Related 関連記事

  1. 1

    なぜawt.Dimensionクラスを使用する必要があるのですか?

  2. 2

    "sun.awt.exception.handler"プロパティを設定する必要があるのはなぜですか?

  3. 3

    actionPerformed(AWT)のBeanCurrentlyInCreationException

  4. 4

    なぜjava.awt.Graphics.drawLineが非常に遅いのですか?

  5. 5

    java.awt.Dimensionにパブリック変数があるのはなぜですか?

  6. 6

    OSXで画像をコピーして貼り付けると、Java8でsun.awt.image.MultiResolutionImageが返されるのはなぜですか。

  7. 7

    JButtonでjava.awt.Robotを停止する

  8. 8

    この変数がスコープ外にあるのはなぜですか?

  9. 9

    java.awt.Desktopの問題

  10. 10

    dockerjenkinsのjava.awt.HeadlessException

  11. 11

    ScalaではJavaのAWT:(AWT-EventQueueの-0)java.lang.NoClassDefFoundErrorの

  12. 12

    AWTでAdjustmentListenerイベントのソースを取得する

  13. 13

    java.awt.Shapeを移動するJavaSwing

  14. 14

    変数が存在するために、ifステートメントのスコープ外で宣言する必要があるのはなぜですか?

  15. 15

    AWT-EventQueue-0の実行

  16. 16

    JavaのAWT Robotクラスに相当するPythonはありますか?

  17. 17

    画像(java.awt.Image)が色なしの白黒であるかどうかをどのように判断しますか?

  18. 18

    スレッド「AWT-EventQueue-0」java.lang.Errorで例外が発生したのはなぜですか?

  19. 19

    java.awt.RobotのようなAndroid API

  20. 20

    Java.awt.Robotタイプのユニコード文字を作成する方法は?(出来ますか?)

  21. 21

    PythonでリソースラッパーのDisposeパターンを実装する必要がありますか?

  22. 22

    findでセミコロンをエスケープする必要があるのはなぜですか?

  23. 23

    (Java)なぜ一部の人々はまだスイングではなくawtライブラリを使用しているのですか?

  24. 24

    ゲーム内のjava.awt.Robot?

  25. 25

    SpringBoot統合テストがjava.awt.HeadlessExceptionで失敗する

  26. 26

    C、なぜ printf をループの外側ではなく内側に置く必要があるのですか?

  27. 27

    AWT / SWINGでポイントの色を探す機能はありますか?

  28. 28

    Java AWT Canvasで値が変更されたオブジェクトのみを再レンダリングする方法はありますか?

  29. 29

    Androidでjava.awt.geom.Areaに相当するものは何ですか?

ホットタグ

アーカイブ