Performance Analyzer provides three view modes for displaying performance data for applications written in the Java programming language: User mode, Expert mode, and Machine mode. User mode is shown by default where the data supports it. The following section summarizes the main differences between these three view modes.
User mode shows compiled and interpreted Java methods by name, and shows native methods in their natural form. During execution, many instances of a particular Java method might be executed: the interpreted version, and, perhaps, one or more compiled versions. In User mode all methods are shown aggregated as a single method. This view mode is selected in Performance Analyzer by default.
A PC for a Java method in the User view mode corresponds to the method-ID and a bytecode index into that method; a PC for a native function correspond to a machine PC. The call stack for a Java thread may have a mixture of Java PCs and machine PCs. It does not have any frames corresponding to Java housekeeping code, which does not have a Java representation. Under some circumstances, the JVM software cannot unwind the Java stack and a single frame with the special function, <no Java callstack recorded>, is returned. Typically, it amounts to no more than 5-10% of the total time.
The Functions view in User mode shows metrics against the Java methods and any native methods called. The Callers-Callees view shows the calling relationships in User mode.
Source for a Java method corresponds to the source code in the .java file from which it was compiled, with metrics on each source line. The disassembly of any Java method shows the bytecode generated for it, with metrics against each bytecode and interleaved Java source, where available.
The Timeline in the Java representation shows only Java threads. The call stack for each thread is shown with its Java methods.
Data space profiling in the Java representation is not currently supported.
The Expert mode is similar to the User mode, except that some details of the JVM internals that are suppressed in the User mode are exposed in the Expert mode. With the Expert mode, the Timeline shows all threads. The call stack for housekeeping threads is a native call stack.
The Machine mode shows functions from the JVM software itself, rather than from the application being interpreted by the JVM software. It also shows all compiled and native methods. The Machine mode looks the same as that of applications written in traditional languages. The call stack shows JVM frames, native frames, and compiled-method frames. Some of the JVM frames represent transition code between interpreted Java, compiled Java, and native code.
Source from compiled methods are shown against the Java source. The data represents the specific instance of the compiled-method selected. Disassembly for compiled methods shows the generated machine assembler code, not the Java bytecode. Caller-callee relationships show all overhead frames, and all frames representing the transitions between interpreted, compiled, and native methods.
The Timeline in the Machine view mode shows bars for all threads, LWPs, or CPUs, and the call stack in each is the Machine mode of the call stack.