When using Performance Analyzer on JVM, one can see significant amount
of exclusive User CPU time and almost 100% inclusive User CPU time is
attributed to the Unknown function. Analyzer is unable to map a PC to
a symbolic name when this PC comes from a code region not described
either in the symbol table of the executable (or a shared library for
that matter) or dynamically via JVMPI call (for dynamically compiled
methods) or libcollector API.
We know of at least two cases when JVM dynamically generates code
for its own use: the Interpreter and i2c/c2i adaptors.
We would like to have JVM describe any internally generated code
using either libcollector API or any ad hoc API so that Analyzer
is able to resolve PCs from such code.
That will help JVM profiling as well as regular Java application
profiling (work in progress).
of exclusive User CPU time and almost 100% inclusive User CPU time is
attributed to the Unknown function. Analyzer is unable to map a PC to
a symbolic name when this PC comes from a code region not described
either in the symbol table of the executable (or a shared library for
that matter) or dynamically via JVMPI call (for dynamically compiled
methods) or libcollector API.
We know of at least two cases when JVM dynamically generates code
for its own use: the Interpreter and i2c/c2i adaptors.
We would like to have JVM describe any internally generated code
using either libcollector API or any ad hoc API so that Analyzer
is able to resolve PCs from such code.
That will help JVM profiling as well as regular Java application
profiling (work in progress).
- relates to
-
JDK-5025310 JVM's own dynamic code is not reported to Collector on Linux
- Resolved
-
JDK-4737533 Need additional fixes for dynamic code in JVM for profiling
- Closed