title: How to debug high CPU usage on Java process, not caused by Java threads
body: <p>I have a Java application that runs on Tomcat on Linux. After running for several weeks, it starts taking close to 100% CPU (as displayed by 'top' command), but none of the Java threads takes more than 5% CPU; it's not kernel CPU either (that one is between 0.2-0.5%). So something else (native code? JVM itself?) is causing this high CPU usage. The problem can only be solved by restarting Tomcat.</p>
  
  <p>So the question is: is there the way to find out what is causing this high CPU usage, if not Java threads? Is there a way to "look at" native libraries running inside Java process. Or what should be my debugging strategy in this case?</p>
  
  <p>Versions: Linux 2.6 (CentOS), Apache Tomcat/6.0.33, JVM: Sun 1.6.0_29-b11. The application happens to be Forgerock OpenAM 10.0 (I am checking known issues on their end too, but so far didn't find the exact match, so looking for more generic suggestions)</p>