2016-06-20 5 views
1

enter image description here自己時間は残り

よりも時間がかかり、私はデバッグモードで私のプログラムを実行して、私はCPU使用率が第一の方法のために上がることがわかりました。 残りのメソッドはCPUの使用量が少なくて済みます。

最初の方法がCPU使用率を大幅に(ほぼ100%)必要とする理由は誰にでも指摘できますか?どうすれば減らすことができますか?

+0

は 'ます。public void MyMethodは(文字列のparamName、接続dbConn){ \t \t \t \t試し{ \t \t \t(dbConn.isValid(10))であれば{ \t \t \t \t \t \t \t –

+0

私達にあなたの方法を示しています\t \t \t \t \t CallableStatement文= dbConn.prepareCall( "{call myStoreProcedure (?)} "); \t \t \t \t statement.setString( "param"、paramName); \t \t \t \t statement.execute(); \t \t \t \t System.out.println( "NgsScannedDataを作成するステートメント:"); \t \t \t \t statement.close(); \t \t \t} \t \t}キャッチ(のSQLException E){ \t \t \t e.printStackTrace(); \t \t} \t} – goutthee

+0

ほとんどのメソッドは他の関数を呼び出しています。それは奇妙だ。呼び出しスタックがメソッドにあるときにgcが発生する可能性はありますか?私は不思議です。 – waltersu

答えて

1

セルフタイムはCPU使用率を測定しません。それは壁時計の時間を測定する。そのため、Total Time,Total Time (CPU)Self Time、およびSelf Time (CPU)が存在します。 Self Time (CPU)はコード内のホットスポットを探しているときには興味深い部分です。一例として、

あなたが眠っているスレッド(唯一のやるべき仕事がないと、眠っている)を持っている場合、それはあなたにSelf Timeため100%を与える(と合計時間のために同じ時間)だろうが、CPUのための0

+0

Thread.sleep()は他の関数を呼び出していて、それは* Total Time *の一部ですが、* Self Time *の一部ではありません。 – waltersu

+0

'Thread.sleep();'は、CPU使用なしで完全な 'self time 'を取得するネイティブメソッドを呼び出します。 – Kayaman

関連する問題