Question

I just installed Java 1.6_07 so I could try profiling with VisualVM. It tells me that my app is spending 60% of its time in sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run

How do I find out what it was doing during that time? How much of the time was it waiting for something to call it, or doing something else? What was calling it and what was it calling? I just can't seem to find any way to drill down to deeper levels like there is in Quantify or the Perl profiler.

Was it helpful?

Solution

I don't have experience with VisualVM -- but JRockit's profiler does provide this information; you may consider using it instead.

Update: a question with a list of java profilers can be found here, for users with sufficient rep to view deleted questions.

OTHER TIPS

Does your App use RMI over TCP? If not, is it possible that this is a heisenbug, caused by instrumenting the VM? I assume VisualVM must use RMI calls to figure out what's going on in the JVM....

I have started using the new VisualVM 1.2. It allows profiling CPU and drilling down using a call graph. Try it out.

Using 1.3.2 also seeing this being the reported hangup I am hitting. In 1.3.2 if you do a thread dump and look for this call you can see where it lands in the call chain for that thread. Not sure if Yuval F was referring to this or something else. Look up the call chain to see what it's calling and so on, look down to see what it's being called by and so on.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top