Performing an offline profiling run for your application is analogous to
remote profiling with special library parameters
passed to the profiling agent VM parameter
-agentpath:[path to jprofilerti library]
:
offline
as a library parameter enables offline profiling.
In this case, a connection with JProfiler's GUI is not possible.
id=nnnn
. Your settings in the
profiling settings dialog
are used for offline profiling. The session ID can be seen in the top right corner
of the application settings dialog.
config={path to config.xml}
. The config file is located in
the .jprofiler8 directory in your user home directory (on Windows, the user home
directory is typically c:\Documents and Settings\$USER). If you leave out this
parameter, JProfiler will try to detect the config file location automatically.
A summary of all library parameters is available in the remote session invocation table.
If you profile on a machine where JProfiler is not installed, you will need to transfer the contents of the bin/{your platform} directory as well as the JAR file bin/agent.jar and the config file {User home directory}/.jprofiler8/config.xml.
Example:
A typical invocation for offline profiling will look like this:
java "-agentpath:C:\Program Files\jprofiler7\bin\windows\jprofilerti.dll=offline,id=109,config=C:\Users\bob\.jprofiler8\config.xml" "-Xbootclasspath/a:C:\Program Files\jprofiler7\bin\agent.jar" -classpath myapp.jar com.mycorp.MyApp
Please study the remote session invocation table to generate the correct invocation for your JVM. Also, please don't forget that the platform-specific native library path has to be modified, just like for remote profiling.
Usage: jpenable [options] jpenable starts the profiling agent in a selected local JVM, so you can connect to it from a different computer. If the JProfiler GUI is running locally, you can attach directly from the JProfiler GUI instead of running this executable. * if no argument is given, jpenable attempts to discover local JVMs that are not being profiled yet and asks for all required input on the command line. * with the following arguments you can partially or completely supply all user input on the command line: -d --pid=PID The PID of the JVM that should be profiled -n --noinput Do not ask for user input under any circumstances GUI mode: (default) -g --gui The JProfiler GUI will be used to attach to the JVM -p --port=nnnnn The port no which the profiling agent should listen for a connection from the JProfiler GUI Offline mode: -o --offline The JVM will be profiled in offline mode -c --config=PATH Path to the config file that holds the profiling settings -i --id=ID ID of the session in the config file. Not required, if the config file holds only a single session. Note that the JVM has to be running as the same user as jpenable, otherwise JProfiler cannot connect to it. An exception are Windows services running under the local system account if you list them interactively with jpenable.
Usage: jpanalyze [options] "snapshot file" ["snapshot file" ...] where "snapshot file" is a snapshot file with a .jps, .hprof, or .dat extension [options] is a list of options in the format -option=value Options: -format=dir|tar|tgz The format in which the analysis data should be stored. Defaults to dir. -removeUnreferenced=true|false If unreferenced or weakly referenced objects should be removed. -retained=true|false Calculate retained sizes (biggest objects). removeUnreferenced will be set to true.
The removeUnreferenced and the retained command line options correspond to the options in the heap walker options dialog.
With triggers, you can define all profiling actions in the JProfiler GUI.
On Java 1.5+, the profiling agent registers an MBean that gives access to all profiling actions. MBeans are configurable in jconsole:
Most methods of the com.jprofiler.api.agent.Controller
are reflected in the MBean. For
documentation of the MBean operations, please see the javadoc of com.jprofiler.api.agent.mbean.RemoteControllerMBean
.
The MBean may also be accessible via configuration facilities of an application server or other tools.
With Java 1.5+, you can use the command line controller tool to interactively record profiling data and save snapshots in a convenient way without having to use a separate MBean viewer.