2

Hibernate を使用して Java Swing ベースのアプリケーションに取り組んでいます。また、NetBeans IDE を使用してアプリケーションを構築しました。

私は約13のサブモジュールを持っています。私はJInternalFramesそれらのサブモジュールを構築するために使用しました。また、JasperViewer を使用したレポートが 4 件あります。

アプリケーションの読み込み中、約 2 ~ 3 分かかります。また、あるモジュールから別のモジュールに切り替えると、各モジュールのロードに時間がかかります。

今、私は次のことを確認する必要があります

  1. Swing アプリケーション全体のメモリと CPU を確認する方法と、CPU とメモリの使用量が多いのはどのクラスですか?

  2. 簡単なアプローチを使用してアプリケーションをテストする方法は?

  3. Swing アプリケーションのパフォーマンスを向上させるにはどうすればよいですか?

4

3 に答える 3

3

このような起動時間は、単に大きなGUIアプリケーションを持っていることが原因ではありません。問題はデータベースへのアクセスだと思います。質問が出てきます:

  • Hibernateの遅延読み込み機能を使用していますか?これは優れた機能ですが、責任を持って使用しないと、いくつかの問題が発生する可能性があります。これを読んでください。
  • アプリケーションのデータベースからデータをキャッシュしますか、それともすべてのアクションでデータベースからデータをフェッチしますか?読み込み時間を短縮する良い方法は、HashMapにデータを保存することです。Hibernateには独自のキャッシュもあります。
  • データベース全体の大部分をフェッチしますか?これは望ましくありません。より優れたデータベーススキーマ設計により、これを防ぐことができ、遅延読み込みも防ぐことができます。
  • アプリケーションはマルチスレッド化されていますか?イベントディスパッチスレッドからデータをロードすると、大きなメリットがあります。

あなたの質問に:

  1. 最も単純なツールは、すべてのJDKに付属しています。jVisualVM.hprofファイルを保存し、他のツールで分析することもできます。メモリアナライザツールまたはNetbeansプロファイラも適切な選択です。詳細については、これを読むこともできます。
  2. これは、何をテストするかによって異なります。クラス(JUnit)、GUI(UISpec4J)だけですか、それともテストではなくプロファイリングを意味しますか?
  3. 上記のように、データをキャッシュするか、遅延読み込みを使用するか、アプリケーションをマルチスレッド化することで、パフォーマンスを向上させることができます。これを実現する方法もここで読むことができます。
于 2012-06-28T07:26:43.053 に答える
3

NetBeans を使用しているため、内部プロファイラーを使用してください。これは、時間を失った場所に関する詳細な情報を取得するためのツールです。

詳細については、NetBeans サイトを確認してください。

于 2012-06-28T07:18:47.030 に答える