2012-04-07 6 views
4

私のマルチスレッドJavaアプリケーションが大量のCPUを消費している理由をデバッグしようとすると、各スレッドがCPUを集中的に使用するのではなく、Javaを実行するときに、私のCPUの100%を占めるJavaランタイムを見つけてください。外部プロセスがJava CPUを大量に消費する

さらにデバッグするために、単純なLinuxの "ls"コマンドでその外部プロセスを置き換えました。ここで私は

String[] commands = new String[]{"/bin/sh", "-c", "ls"}; 
      try { 
       Process p = Runtime.getRuntime().exec(commands); 
      } catch (IOException ex) { 
       // 
} 

IT-実行していますかそれでも、私は、JavaがCPUのすべてを使用して表示されます。

私は、プロセスからの出力も読んでいませんし、ストリームを開くこともありません。

何が間違っている可能性がありますか?単純にls Javaから外部で実行すると、Javaランタイムで大きなCPUが消費されるのですか?

代わりにスレッド処理をシミュレートするために、外部コマンドを実行するので、私はのThread.sleepを(入れてみました

)と、それは

答えて

0

は既知の問題のように見えるこれ以上のCPUの豚を微作品は、私がこれを使用する必要があるだろうと思います - https://github.com/axiak/java_posix_spawn

更新:

java_posix_spawnを使用した後、問題が消えました!

関連する問題