• 締切済み

CPUの使用率が高くなる事象について

こんにちわ。業務で行き詰ってしまい、アドバイスをいただきたく質問させていただきます。 稚拙な文章ですがご容赦くださいますようお願いいたします。 ★プログラム構造 アプリケーションのメイン画面にテキストフィールドが配置されていて、 そのフィールドが空白の状態でエンターキーを押下するとポップアップでエラーを表示する。 エラーの表示は、JOptionPaneを継承したクラス内で、JDialogで表示している。 ただし、JDialogのタイトルバー上で右クリックをするとメニューバーが表示されてしまう。 この現象に対して、タイトルバーの部分をペイントすることにより、右クリックを防止しました。 ポップアップは移動できるため、マルチスレッド処理にし常にリペイントがかかるように製造。 ★不具合 ところが運用にて、1ヶ月程度たつとメイン画面の動作が非常に遅いとのクレームが来たので CPU使用率を調べてみたところ80%~90%ぐらいまで上昇していた。 画面上のオペレーションは、何もしてないのに80~90%から減少することはありませんでした。 メモリの使用率は大して使用しておりませんでした。 また発生するマシンはCPUが低スペックのもので発生しています。 メイン画面を再起動(JMの再起動)をすると現象が解消されるため、本アプリが原因と断定しました。 ところが、何が原因なのかがわかりません。 スレッド辺りが怪しいなぁとは思っておりますが。。 調査の切り口や、現象解消方法をご存知の方がいらっしゃいましたらご教授願いたく思います。 以下は環境です。 ◎OS:UNIX(Solaris8) ◎JAVA:1.4.1_03

  • Java
  • 回答数5
  • ありがとう数8

みんなの回答

  • kacchann
  • ベストアンサー率58% (347/594)
回答No.5

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

siina_k
質問者

お礼

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

siina_k
質問者

補足

Swingのシングルスレッドルールに違反していることが判明しました。 (遅すぎますね・・・・。気づくのに。) おそらくその影響かと思います。 とりあえずこの質問は締め切らせていただきます。 回答していただいた皆さんありがとうございました。

  • kacchann
  • ベストアンサー率58% (347/594)
回答No.4

>スレッド辺りが怪しいなぁとは思っておりますが とりあえず稼動スレッド数の増減を 観察してみては。

siina_k
質問者

お礼

回答ありがとうございます。 とりあえず、手っ取り早く確認したかったので、以下の二つの方法で確認したところスレッドは正しく終了しておりました。 1)run()メソッドの中でhashcodeを出力。 2)javaのバージョンを1.5にあげてjconsoleで確認。

回答No.3

切り口が変わってしまうのですが、 タイトルバーを出さないという制御方法です。 別クラスになりますが、 JFrameで setUndecorated(true); とすれば、タイトルバーがでません。 もしくは、親のJWindowクラスは元々タイトルバーがありません。 以前、タイトルを出したくないとお客さんから依頼を受けて、JWindowに変更しました。 JDialogに合わせるコーディングは必要ですが、スレッドは考える必要がなくなると思います。

siina_k
質問者

お礼

ありがとうございます。 namida6000さんの教えていただいた方法は、似たような案を 代変案として提出済みです。 私が製造するのであれば、namida6000さんと同じような製造方法にするのですが、製造したのは、私ではないので・・・・。 ご意見ありがとうございます。

  • bgbg
  • ベストアンサー率53% (94/175)
回答No.2

> マルチスレッド処理にし常にリペイントがかかるように製造。 どう見てもこの部分が原因に思えるのですが。 要するにエラーダイアログの所在を常に監視し、タイトルバーの部分を上で塗りつぶしていると。 それをマルチスレッドで無限ループさせているわけですね。 無限ループは何もしなくても非常にCPUパワーを消費します。 この部分の設計を考え直す必要があるでしょう。 # そもそも右クリックメニュー表示を禁止する必要があるのか?

siina_k
質問者

お礼

回答ありがとうございます。 >要するにエラーダイアログの所在を常に監視し、タイトルバーの部分を上で塗りつぶしていると。 >それをマルチスレッドで無限ループさせているわけですね。 おっしゃるとおりです。 >無限ループは何もしなくても非常にCPUパワーを消費します。 勉強になります。 ただ、スレッドが停止・開放された場合はCPUの使用率が下がると思っておりますが、間違っていますでしょうか。 現状では、CPU使用率が減少しないのです。 >この部分の設計を考え直す必要があるでしょう。 すでに代変案は提出済みなのですが、原因究明を要請されていますので、調べている最中でございます。 ># そもそも右クリックメニュー表示を禁止する必要があるのか? 客先からの要望なのです。。

  • houou0123
  • ベストアンサー率26% (4/15)
回答No.1

スレッドがどんどん増えて、溜まっていってるのでは? きちんと開放されてるでしょうか? こちらが参考になるかと思いますが・・・。

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

お礼

回答ありがとうございます。 参考URLも参照させていただきました。 しかし、参考URLに書いてある内容は行っておりました。 (1)スレッドをスタートさせてリペイントを繰り返す。 (2)ダイアログ(ペイントを行う元のダイアログ)を表示。 (3)OKボタンが押下され、制御が戻ってきたらスレッドを停止させる。 UNIXとWINDOWSでなにか相違点などあるのでしょうか。 現在デバックはWINDOWSで行っています。

siina_k
質問者

補足

すみません。もうひとつ気になってることがあります。 (1)からの処理は、staticなメソッド内で行っています。 そして、(2)のダイアログの表示に関しては、 dialog.show(); で、表示しています。 このメソッドは使用すべきではありません。との警告が表示されます。 これが関係ある可能性がありますか。

関連するQ&A

  • ダイアログでタイトルバーを非表示

    いつもお世話になっております。 タイトル通りなのですが、ダイアログにてタイトルバーを非表示にしたいです。 (理由はタイトルバーにて右クリックを行うとメニューバー?が表示されてしまうからです。) 現在ダイアログは、JOptionPaneを使用しております。 JFrameを使用し、ダイアログっぽく見せるのであれば可能なことは存じております。 出来ましたらJOptionPaneを使用した上で出来ないものでしょうか? JOptionPaneがダメだったらJDialogあたりを考えております。 あわせてJDialogでも可能かどうかご回答いただければ幸いです。 ちなみに環境はJ2SDK1.4.1.03で実行環境はUNIXです。

    • ベストアンサー
    • Java
  • CPU使用率100%

    こんばんは。 PCの動きが重くなったので タスクマネージャーでパフォーマンスのタブを 見るとCPU使用率が100%になっていました。 プロセスタブを見るとSynTPEnh.exeと言うファイルの CPUというとこが99になっていたので これかな?と思い右クリックをして プロセス終了にするとCPU使用率が1%になりました。 動くもすごく早くなったのですが 再起動すると またCPU使用率100%になって しまいます。SynTPEnh.exeって何ですか? これを止めてしまえば問題解決するのでしょうか? よろしくお願いします。

  • CPU使用率が100%に・・・

    CPUの使用率について質問です。 いつもチャットをしているのですが、チャットをしているときにログを入力していると、CPUの使用率が100%になってしまいものすごく遅くなります この現象が出るようになったのは、先週OSをMeからXPに変えてからです。Meの時は使用率が100%になることは無かったのでXPに変えたことが何らかの原因では無いかと考えているのですが・・・ ちなみにペンティアム3-856です 判る方がいらっしゃったら教えて下さい 宜しくお願いします

  • プロセスのCPU使用率のみを切り出したい

    httpdプロセスのCPU使用率のみを切り出してshに渡して使用したいのですが、 cut や sed 、その他を使って、どうすれば、うまく切り出せるでしょうか。 #top -b -n 1 |grep httpd  の結果は以下の通り(例として3行のみ)ですが、 CPU使用率は、右から4つ目のフィールドです。 (それぞれ 12.0 3.0 5.1 といった数値の箇所です) cut -d' ' -f 10 などだと、スペースの数が変わるためうまくいきません・・ 32554 apache 15 0 29352 9160 1932 S 12.0 0.9 0:00.00 httpd 325 apache 15 0 2932 9160 1932 S 3.0 0.9 12:00.00 httpd 3255 apache 15 0 29352 9160 1932 S 5.1 0.9 0:00.00 httpd どうぞ宜しく御願いいたします。

  • CPU使用率について教えてください。

    CPU使用率について教えてください。 現在VALUESTAR VN770/V を使っています。 WINDOWS7です。 CPU使用率を見てみると、特に作業していないデスクトップの画面の時でも60%くらいあります。 常駐ソフトを止めても、なぜか55%もあります(+_+) 再セットアップもしてみましたが、あまり変わりません…。   Windows7を使うのは初めてなんですが、こんなものなのでしょうか? 使用率を減らす方法はなにかないでしょうか? 何か少しでもご存知の方いらっしゃいましたら教えてください。 よろしくお願いいたします。

  • CPU使用率が高い

    アルプス社のプリンター〔MD5500〕をつかい、印刷をおこなうと直ぐにCPU使用率が100%になりそれ以降100%以下にならないためプリンターが使用できなくなり再起動してまたもう一度印刷しなくてはならない状況で困ってます。再起動後も同じ現象が続くのでまともに印刷ができません。メモリーが少ないからこのようになろのかと思い、512MBから1GBに変えたのですが、変化は見受けられません。CPU使用率を上げないようにするにはどうすればよいのでしょうか?ご教授のほうよろしくお願いします

  • CPU使用率100%が続いています。

    こんにちは。 Windows Vista, Service Pack, メモリー2.0GB, Intel Core 2 Duo CPUを使用しています。 数日前よりPCがCPU使用率100%の状態が続いており、 常にドライバを抜き差しする音が鳴り続いています。 Microsoft Fixを試したみたところ、 「Microsoft ISATAP Adapter #3のドライバーに問題があります。ドライバーを再インストールすると解決する場合があります」というメッセージが表示されました。 デバイスマネージャーよりUSB大容量記憶装置を右クリックし、ドライバの更新を選択したところ、オンラインでドライバを検索していますの画面から切り替わらず、ずっと表示されたままの状態が続いています。 解決策を教えていただけますでしょうか。

  • ◎CPU使用率を少なくしたいのですが??

    ◎先日、チャットをしていた人にPCが遅いと、相談したところ「タスクマネージャでCPU使用率を見てみたら」と言われました。見てみたところ、100~90%と表示され、驚きました。 きっと、私のPCは不要な仕事をしているのだと思いますが、CPU使用率を少なくするには、どうしたら良いでしょうか? 初心者なので、どうぞ、よろしくお願いいたします。

  • CPUの使用率が100%から下がりません

    題名の通り、CPUの使用率が100%から下がりません。 この現象を確認したのは今日の朝です。 なんだかいつもより動きがモッサリしてるな…と思い、タスクマネージャーを開くと、CPU使用率が100%でした。 その後何回か再起動していますが、起動直後から100%のままです。 このPCを使い始めてもうすぐ4年になりますが、CPUの使用率が100%のまま、というのは初めてです。 タスクマネージャーのパフォーマンスのタブを開き、そこからリソースモニターを開いてみてみると、 minerd.exe  63% ndadmin.exe  34% どうやらこの2つがCPUを大量に使用しているようです。 しかし、こんな名前のもの見たことがありません。ここ最近、何かのソフトをインストールした覚えもありません。 インターネットで調べてみても、いまいち何のファイルなのだか分かりません。 どうすれば、CPU使用率を下げることができるでしょうか。 ちなみに、使用OSはWindows7 64bit です。 これ以外に必要な情報ありましたら、ご指摘下さい。

  • CPUの使用率について教えて下さい

    最近、中古パソコンを購入しました。機種は富士通の企業向けモデル  FMV-C5200です。 http://www.fmworld.net/biz/fmv/product/hard/vdt0504/c5200/ CPUは3.0GHzのタイプです。 主にネットとメールで使用している事が多いのですが、時々ファンの音(おそらくCPUの冷却ファン)が継続して作動します。 タスクマネージャのパフォーマンスでCPU使用率を見ると使用率50%とか、時には100%のままになっています。 通常はネットとメールを行っていてもCPU使用率は10%未満で安定している事が多いです。 数分間様子を見ていてもCPU使用率が下がらない(ファンも止まらない)ので再起動を行うと、また安定した状態に戻ります。 何らかのソフトが自動でダウンロードを始めたとか、そういった動きも見られないのでCPUに負担が掛かっているとは思えない状況です。 なぜ、このような現象が起こるのでしょうか? 故障の前ぶれという可能性もあるのでしょうか?

専門家に質問してみよう