Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I automatically attach JVisualVM to a short-lived program?

Briefly reading tutorials and playing with JVisualVM, I can manually attach it to a long-running server or Swing application, but I'd also like to use it for short programs that run in under a second.

I suppose I could have my program block on the console, attach JVisualVM, and then hit a key to have the program do its real work. Is there a less kludgy workaround?

(This is mainly for my own curiosity, and it would be nice to use a polished GUI like JVisualVM instead of -Xprof or HPROF).

like image 420
ide Avatar asked Mar 05 '11 00:03

ide


2 Answers

If you are using eclipse, you can use the "Stop in main" option in the debug mode and add the following lines as arguments to your process

-Dcom.sun.management.jmxremote.port=<fixed_port_number>
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false

Once it starts in debug mode and blocks then attach the jvisualvm to it connecting to the process using the port number specified.

like image 52
Kilokahn Avatar answered Sep 28 '22 20:09

Kilokahn


Add suspend=y to your debug settings. This will cause your program to halt until a debugger/profiler is attached.

like image 38
Ruben Avatar answered Sep 28 '22 19:09

Ruben