私は、スイングを使用してデスクトップ用の高度なJavaアプリケーション(Financial Management
)を開発しました。私はそれを使用しているクライアントをいくつか持っています。最近私のクライアントの一人は、アプリケーションが凍って何回か作業をしたときにアプリケーションを再起動しなければならないと言っていました。
問題は、私のマシン上のアプリケーションをテストしてうまく動作し、いくつかのアクションとデータでオーバーロードしてもフリーズしないということです!
スイングJavaアプリケーションがそのようなことをする可能性のあることについて、誰かに私にいくつかのヒントを教えてもらえますか、どうすれば自分のアプリケーションのパフォーマンスを向上させることができますか?Javaアプリケーションの改善
2
A
答えて
3
多くの原因が考えられます。私の最初の推測はあなたのコードのどこかにrace conditionとなるでしょう。興味深い事実は、アプリケーションがフリーズしているように見える間に、アプリケーションが0%のCPU時間または100%のCPU時間を使用している場合です。 0%お互いを待っているものがあることを示します(デッドロック)。 100%無限ループを示すでしょう。 クライアントのマシンにアクセスできる場合は、デバッガをフリーズしたアプリケーションに接続するか、jstackを使用してスタックトレースのダンプを作成することができます。
foo.addActionListener((ActionEvent ae) -> {
// time consuming task
});
これは、すべてのユーザーインターフェイス部分が機能するまでフリーズする原因になります。
+0
ニースのヒントは、特に "jstack"ありがとう " ) – SlimenTN
0
一つの可能性はのactionListener内の大規模なタスクを実行するたとえば、代わりに別のスレッドのSwingのスレッド内で大規模なタスクを実行している可能性があります戻る。このような関数が実際の作業に新しいスレッドに渡すか、またはフラグを設定して既存のスレッドで作業を実行するようにしてください。例えば
メインループでチェックされているメインの静的ブールあります
public static class Main {
public static boolean do_action;
public static void main(){
while(true) {
if(do_action) {
// do action of some kind
do_action = false;
}
// sleep or do other things
}
}
}
をそしてそうのようなアクションリスナー:
foo.addActionListener((ActionEvent ae) -> {
Main.do_action = true;
});
関連する問題
- 1. アプリケーション、タッチイベントのパフォーマンスを改善
- 2. Java並行コード改善のアイデア
- 3. Java:リーダープログラムの速度を改善する
- 4. Java 2D Platformerの重力改善
- 5. フォールを改善する方法Javaコード
- 6. Javaでメソッドを改善する
- 7. パンダの改善
- 8. スタンプカップリングの改善
- 9. Xpathの改善
- 10. バルクインサートの改善
- 11. jQueryの改善
- 12. コードの改善
- 13. スクラムスタンドアップフォーマットの改善
- 14. ソフトウェアメトリクスの改善?
- 15. 誰でもJavaで書かれた私のアプリケーションを改善できますか?
- 16. Neo4jアイソクロナス改善
- 17. 改善「%%LIKE」クエリ
- 18. 改善精度
- 19. LINQクエリの改善
- 20. Android - データグラムソケットガベージコレクションの改善
- 21. デザインの改善 - メッセージ
- 22. イメージカラーリングロジック/アルゴリズムの改善
- 23. ストアドプロシージャ/テーブルインデックスの改善
- 24. SonarQube:メジャーフィルターウィジェットの改善
- 25. SecureFileTransferClientのパフォーマンス改善
- 26. SQL UPDATEの改善
- 27. JavaScriptアニメーションの改善
- 28. PHP - データベースモデルの改善?
- 29. PHPクラスの改善
- 30. Flashfillサンプルパターンの改善
はたぶん、これはあなたが役立ちます:[レッスン:で同時実行をスイング] – pzaenger
ありがとうございます。私はそれを見てください:) – SlimenTN