Oracle® Solaris Studio 12.4: Performance Analyzer

Exit Print View

Updated: January 2015
 
 

Limitations on Java Profiling

    You can collect data on Java programs subject to the following limitations:

  • You should use a version of the Java 2 Software Development Kit (JDK) no earlier than JDK 7, Update 25 (JDK 1.7.0_25). The Collector first looks for the JDK in the path set in either the JDK_HOME environment variable or the JAVA_PATH environment variable. If neither of these variables is set, it looks for a JDK in your PATH. If there is no JDK in your PATH, it looks for the java executable in /usr/java/bin/java.

    The Collector verifies that the version of the java executable it finds is an ELF executable. If it is not, an error message is printed indicating which environment variable or path was used and the full path name that was tried.

  • You must use the collect command to collect data. You cannot use the dbx collector subcommands.

  • Applications that create descendant processes that run JVM software cannot be profiled.

  • Some applications are not pure Java, but are C or C++ applications that invoke dlopen() to load libjvm.so, and then start the JVM software by calling into it. To profile such applications, set the SP_COLLECTOR_USE_JAVA_OPTIONS environment variable and add the –j on option to the collect command line. Do not set the LD_LIBRARY_PATH environment variable for this scenario.

  • You must use -j on to obtain profiling data if the target is a JVM machine. The -j on option is not needed if the target is a class or jar file. If you are using a 64-bit JVM machine, you must specify its path explicitly as the target; do not use the -d64 option for a 32-bit JVM machine. If the -j on option is specified, but the target is not a JVM machine, an invalid argument might be passed to the target, and no data would be recorded. The collect command validates the version of the JVM machine specified for Java profiling.