こんにちわ。業務で行き詰ってしまい、アドバイスをいただきたく質問させていただきます。
稚拙な文章ですがご容赦くださいますようお願いいたします。

★プログラム構造
アプリケーションのメイン画面にテキストフィールドが配置されていて、
そのフィールドが空白の状態でエンターキーを押下するとポップアップでエラーを表示する。

エラーの表示は、JOptionPaneを継承したクラス内で、JDialogで表示している。

ただし、JDialogのタイトルバー上で右クリックをするとメニューバーが表示されてしまう。

この現象に対して、タイトルバーの部分をペイントすることにより、右クリックを防止しました。
ポップアップは移動できるため、マルチスレッド処理にし常にリペイントがかかるように製造。


★不具合
ところが運用にて、1ヶ月程度たつとメイン画面の動作が非常に遅いとのクレームが来たので
CPU使用率を調べてみたところ80%~90%ぐらいまで上昇していた。
画面上のオペレーションは、何もしてないのに80~90%から減少することはありませんでした。
メモリの使用率は大して使用しておりませんでした。
また発生するマシンはCPUが低スペックのもので発生しています。

メイン画面を再起動(JMの再起動)をすると現象が解消されるため、本アプリが原因と断定しました。

ところが、何が原因なのかがわかりません。
スレッド辺りが怪しいなぁとは思っておりますが。。

調査の切り口や、現象解消方法をご存知の方がいらっしゃいましたらご教授願いたく思います。

以下は環境です。

◎OS:UNIX(Solaris8)
◎JAVA:1.4.1_03

このQ&Aに関連する最新のQ&A

A 回答 (5件)

あとは、


「プロファイラ」使って
「CPUを消費している箇所」を探るしかない気がします・・・

この回答への補足

Swingのシングルスレッドルールに違反していることが判明しました。
(遅すぎますね・・・・。気づくのに。)
おそらくその影響かと思います。

とりあえずこの質問は締め切らせていただきます。

回答していただいた皆さんありがとうございました。

補足日時:2007/05/24 11:14
    • good
    • 1
この回答へのお礼

回答ありがとうございます。
プロファイラも
JavaBean、Eclipse両方試しましたが、特に問題点は見つかりませんでした。

お礼日時:2007/05/22 10:39

>スレッド辺りが怪しいなぁとは思っておりますが



とりあえず稼動スレッド数の増減を
観察してみては。
    • good
    • 1
この回答へのお礼

回答ありがとうございます。

とりあえず、手っ取り早く確認したかったので、以下の二つの方法で確認したところスレッドは正しく終了しておりました。

1)run()メソッドの中でhashcodeを出力。
2)javaのバージョンを1.5にあげてjconsoleで確認。

お礼日時:2007/05/18 23:40

切り口が変わってしまうのですが、


タイトルバーを出さないという制御方法です。

別クラスになりますが、
JFrameで
setUndecorated(true);
とすれば、タイトルバーがでません。

もしくは、親のJWindowクラスは元々タイトルバーがありません。

以前、タイトルを出したくないとお客さんから依頼を受けて、JWindowに変更しました。

JDialogに合わせるコーディングは必要ですが、スレッドは考える必要がなくなると思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。

namida6000さんの教えていただいた方法は、似たような案を
代変案として提出済みです。

私が製造するのであれば、namida6000さんと同じような製造方法にするのですが、製造したのは、私ではないので・・・・。

ご意見ありがとうございます。

お礼日時:2007/05/17 18:01

> マルチスレッド処理にし常にリペイントがかかるように製造。


どう見てもこの部分が原因に思えるのですが。
要するにエラーダイアログの所在を常に監視し、タイトルバーの部分を上で塗りつぶしていると。
それをマルチスレッドで無限ループさせているわけですね。

無限ループは何もしなくても非常にCPUパワーを消費します。
この部分の設計を考え直す必要があるでしょう。

# そもそも右クリックメニュー表示を禁止する必要があるのか?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>要するにエラーダイアログの所在を常に監視し、タイトルバーの部分を上で塗りつぶしていると。
>それをマルチスレッドで無限ループさせているわけですね。
おっしゃるとおりです。

>無限ループは何もしなくても非常にCPUパワーを消費します。
勉強になります。
ただ、スレッドが停止・開放された場合はCPUの使用率が下がると思っておりますが、間違っていますでしょうか。
現状では、CPU使用率が減少しないのです。

>この部分の設計を考え直す必要があるでしょう。
すでに代変案は提出済みなのですが、原因究明を要請されていますので、調べている最中でございます。

># そもそも右クリックメニュー表示を禁止する必要があるのか?
客先からの要望なのです。。

お礼日時:2007/05/17 13:08

スレッドがどんどん増えて、溜まっていってるのでは?


きちんと開放されてるでしょうか?

こちらが参考になるかと思いますが・・・。

参考URL:http://www.techscore.com/tech/J2SE/Thread/4-4.html

この回答への補足

すみません。もうひとつ気になってることがあります。

(1)からの処理は、staticなメソッド内で行っています。
そして、(2)のダイアログの表示に関しては、
dialog.show();
で、表示しています。

このメソッドは使用すべきではありません。との警告が表示されます。
これが関係ある可能性がありますか。

補足日時:2007/05/17 11:34
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

参考URLも参照させていただきました。
しかし、参考URLに書いてある内容は行っておりました。

(1)スレッドをスタートさせてリペイントを繰り返す。
(2)ダイアログ(ペイントを行う元のダイアログ)を表示。
(3)OKボタンが押下され、制御が戻ってきたらスレッドを停止させる。

UNIXとWINDOWSでなにか相違点などあるのでしょうか。
現在デバックはWINDOWSで行っています。

お礼日時:2007/05/17 09:52

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QAMD製CPUの性能比較サイト

AMD製CPUの性能を数値で一覧で比較しやすいサイトはありますでしょうか?
INTELの比較サイトはあったのですが、AMDは見つかりません…。
おおまかな比較でもかまいません。

異なるCPUの性能は単純に比較できない事は分かっています。
ですが、性能を細かく正確に知りたいワケではなく、おおまかに位置付けを感覚的に把握したいので、強引にでも杓子定規でも何でも、性能を数値化してCPUの種類を超えて、ある程度過去から現在にかけてのCPU性能を比較しているサイトが好ましいです。
具体例として、このような比較表のサイトが望ましいです。

INTELのCPUの比較表のサイト
http://maximums.gatt.nobody.jp/cpu.html
GPUの性能比較
http://mizushima.ne.jp/topic/GPU-benchmark/index.php

今回はAMDの過去から現在にかけてのCPU性能を比較しているサイトを質問していますが、分かりやすいINTELとAMD製CPU比較サイトもありましたらよろしくお願いします。

AMD製CPUの性能を数値で一覧で比較しやすいサイトはありますでしょうか?
INTELの比較サイトはあったのですが、AMDは見つかりません…。
おおまかな比較でもかまいません。

異なるCPUの性能は単純に比較できない事は分かっています。
ですが、性能を細かく正確に知りたいワケではなく、おおまかに位置付けを感覚的に把握したいので、強引にでも杓子定規でも何でも、性能を数値化してCPUの種類を超えて、ある程度過去から現在にかけてのCPU性能を比較しているサイトが好ましいです。
具体例として、このよう...続きを読む

Aベストアンサー

>INTELのCPUの比較表のサイト
>http://maximums.gatt.nobody.jp/cpu.html
ここにAMDも載っているのですが、これではダメなのでしょうか。

Qcpuの比較

最近はCPUがたくさんありますが、いまいち比較ができません。
インテルはクロック重視だし
AMDはIPC?(一サイクルに使うクロック?みたいな)重視なので、単純には比較できません。

そこで、もっと比較しやすい基準ってないんですか?
ベンチマークみたいな

そんなサイトがあれば、価格とパフォーマンスをみてcpu決められるんですが・・・

ちなみに同じことがグラフィックボードにもいえます。
nVIDIAとATIで比較できないし

Aベストアンサー

CPUの比較は色々なサイトで見つかりますよ。
例えば、これ↓
http://www.xbitlabs.com/articles/cpu/

ビデオカードならこれ↓とか。
http://www.xbitlabs.com/articles/video/

QCPUの性能比較サイトを教えて欲しい

Core2DuoとPenDとPen4とCeleronDの性能比較したグラフを以前どこかのサイトで見たのですが知っている方、おられませんでしょうか?
いくら探しても見つかりません。
また4種類のCPU比較ではなくても良いので、CPUのベンチマークなどの性能比較しているサイトがあれば教えてください。

Aベストアンサー

Tom's Hardware Guide Processors: CPU Charts 2006
http://www23.tomshardware.com/cpu.html?modelx=33&model1=430&model2=464&chart=173
他にもPCマーク、オフィスのベンチもあります
http://www.dosv.jp/feature/0610/05.htm

QCPUの処理スピード比較がわかるサイト

最近のパソコンに使用されているCPUには、たくさんの種類がありますが、それらのCPUについてベンチマークテストによるスピード比較が行われているようなサイトはありますか?

Aベストアンサー

いわゆるパソコン用のオフィスやマルチメディア系のアプリケーションのための性能ではなく、計算(CPUとメモリ)の性能という意味ではSPECというベンチマークが有名で、信頼されています。整数計算のSPEC INTと、実数計算のSPEC FPがあります。

参考URL:http://www.spec.org/cpu2000/results/cpu2000.html

QCPUの比較

CPUの比較が基本的にできないことをなんとなく理解はできるのですが、下記のCPUの性能比較についてはどうでしょうか?
(1) インテル Core2Duoプロセッサー
(2) インテル Pentium Dual-Coreプロセッサー
(3) AMD Turion64×2 モバイル・テクノロジー
(4) AMD Athlon64×2

ハイビジョン撮影したビデオカメラの編集用に、これから新しいPCを購入しようと思うのですが、どのCPUがいいですか? できれば長く使いたいのと、初期不良とかの不安要素はできるだけ、減らしたいという考えです。
皆様の使用感でもいいのでアドバイスお願いします。

Aベストアンサー

たびたびすいません。
No.4に書き忘れました。

数字の文字列はお察しの通り、大きいほどCPU性能は上昇します。
例)「Core 2 Duo E6600」は動作周波数2.40GHzで「E6700」は2.66GHz

IntelとAMDではそのナンバーと動作周波数が違うので比較する際には注意してください。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報