Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I connect to a Java command-line tool with the YourKit Java Profiler?

I've build a command-line tool in Java, which I would now like to profile with YourKit. I launch the command-line tool with something like:

$ java -classpath .:foo.bar.jar com.foobar.tools.TheTool arg1 arg2 arg3

It runs to completion in less than 2 seconds.

After reading http://www.yourkit.com/docs/80/help/agent.jsp, I tried the following:

$ java -agentpath:/home/dspitzer/yjp-8.0.24/bin/linux-x86-32/libyjpagent.so -classpath .:foo.bar.jar com.foobar.tools.TheTool arg1 arg2 arg3

...and I get:

[YourKit Java Profiler 8.0.24] JVMTI version 3001016d; 14.3-b01; Sun Microsystems Inc.; mixed mode, sharing; Linux; 32-bit JVM
[YourKit Java Profiler 8.0.24] Profiler agent is listening on port 10001...
[YourKit Java Profiler 8.0.24] *** HINT ***: To get profiling results, connect to the application from the profiler UI
...

(And then the tool runs to completion and exits.)

I guess (by default, at least) YourKit is designed to only connect to running application.

How should I modify my command-line tool to allow connection from YourKit?

  1. I could add a command-line option that will have it pause for input, and I won't press return for it to continue until I've connected to it from YourKit.
  2. Is there a YourKit API that I could add to my tool that would cause it to block until I've connected with YourKit?
  3. Is there a YourKit API or a java command-line option that would create a profiling "snapshot" that I could load and analyze later (after the command-line tool has completed) with YourKit?
like image 945
Daryl Spitzer Avatar asked Jan 22 '23 08:01

Daryl Spitzer


1 Answers

There is no way to pause profiled application until profiler "connects"; you simply do not need to do so.

Instead, please do the following:

  • Turn on desired profiling modes from startup. For example, if you need to profile CPU usage, start either CPU sampling or CPU tracing with corresponding startup options "sampling" or "tracing". See http://www.yourkit.com/docs/80/help/additional_agent_options.jsp

  • If profiled application is short-running, enable snapshot capture on exit with "onexit=snapshot" startup option. Later open captured snapshot in the profiler UI for analysis.

like image 155
Anton Katilin Avatar answered Jan 29 '23 21:01

Anton Katilin