1

私のJavaFX2アプリケーションにはいくつかのfxmlファイルとコントローラーがあります。

  1. LayoutControllerは、静的レイアウト要素BorderPaneを含むlayout.fxmlコントローラーです。このコントローラーにはいくつかの方法があります。
  • BorderPane.setHeader(header.fxmlファイルをロードしてノードを返すいくつかのメソッド)
  • BorderPane.setCenter(center.fxmlファイルをロードしてノードを返すいくつかのメソッド)
  • initialize(URL url, ResourceBundle resourceBundle)setHeaderメソッドが呼び出す場所。

  1. HeaderControllerは、制御要素TabPaneを含むheader.fxmlコントローラーです。HeaderControllerにはonSelectedEventHandlerがあります。このアクションでBorderPane.centerにcenter.fxmlを挿入します。

  2. CenterControllerはcenter.fxmlコントローラーであり、初期化時に制御要素TableViewを挿入し、データを入力します。

私の問題はメモリリークにあります。タブを繰り返し選択しているときにヒープスペースが発生します。

4

2 に答える 2

0

次のように、以前に作成したコントローラーのすべてのデータをクリーンアップする実現されたメソッド:

public void dispose() {

 table.getColumns().clear();

 table.getItems.clear();

 table = null;
}

これは正しいアプローチですか?

于 2012-08-30T15:41:35.577 に答える
0

JVM オプション -XX:+HeapDumpOnOutOfMemoryError を利用しようとしましたか? 詳細については、こちらをご覧ください。

UI オブジェクトが再利用されるのではなく、クリックごとに再作成されている場合に集中する必要がありますか? 詳細については、次のリンクを参照してください: 1) JavaFX でのメモリ リーク 2)ノード オブジェクトが GC されない

于 2012-08-29T13:22:21.913 に答える