Вопрос

I've tried VisualVM and JVM Monitor so far, and neither have behaved as I need them to. A short synopsis of my program: I need to measure a fast application with subsecond precision across 5+ threads. By the time I can select "Start Profiling", my application has ended. As a workaround, I put System.in.read() at the end of my application, but this means that everything from the read onwards is garbage information and skews some of the measurements.

JVM Monitor especially should start automatically profiling on the launch of every application, being embedded into Eclipse.

Это было полезно?

Решение

From the manual: http://www.jvmmonitor.org/doc/#How_to_monitor_app_that_runs_for_short_time

How can I monitor my application that runs only for very short time?

To monitor the application that runs for so short time that you cannot connect JVM Monitor,

Set a break point at point of interest, and run your application with debug mode.
Connect JVM Monitor to the application while stopped at break point.
Collect profiling data with JVM Monitor.

Note: If your application is started from outside Eclipse, you may specify the following option for your application to suspend until debugger is attached.

-agentlib:jdwp=transport=dt_socket,address=<port number>,server=y,suspend=y

Другие советы

There is a new plugin Startup Profiler for VisualVM 1.3.6. It allows you to profile your application from the beginning.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top