2008-09-12 5 views
8

Я только что установил Java 1.6_07, чтобы я мог попробовать профилировать с помощью VisualVM. Он говорит мне, что мое приложение тратит 60% своего времени в sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.runСверление в VisualVM

Как узнать, что он делал за это время? Сколько времени он ждал, чтобы что-то назвать, или что-то еще? Что он называл и что он звонил? Я просто не могу найти способ развернуть до более глубоких уровней, например, в Quantify или Perl-профилировщике.

ответ

5

У меня нет опыта работы с VisualVM, но профилировщик JRockit делает. Предоставляет эту информацию; вы можете использовать его вместо этого.

Update: вопрос со списком ява профайлеров можно найти here

3

Использует ли ваше приложение RMI через TCP? Если нет, возможно ли, что это гейзенбуг, вызванный приложением виртуальной машины? Я предполагаю, что VisualVM должен использовать вызовы RMI, чтобы выяснить, что происходит в JVM ....

+0

У меня была та же проблема. – 2009-11-19 09:57:13

+0

Я думаю, что это тоже, мое приложение вообще не использует никакого RMI и генерирует огромную нагрузку экземпляров Object [], используемых в ObjectOutputStream. – parasietje 2012-01-10 12:22:38

1

Я начал использовать the new VisualVM 1.2. Он позволяет профилировать процессор и сверлить с помощью графика вызовов. Попробуйте.

1

Использование 1.3.2 также видно, что это сообщение об отключении, которое я нажимаю. В 1.3.2, если вы делаете дамп потока и ищете этот вызов, вы можете видеть, где он попадает в цепочку вызовов для этого потока. Не уверен, что Ювал Ф имел в виду это или что-то еще. Посмотрите на цепочку звонков, чтобы узнать, что она звонит, и так далее, посмотрите вниз, чтобы узнать, что она называется и так далее.

Смежные вопросы