Как собрать информацию профилирования для приложения Java 1.4? - PullRequest
1 голос
/ 29 июля 2009

Java-приложение, которое я поддерживаю и которое работает на JRE 1.4.2_12, висит около полуночи каждую ночь. Я хотел бы попытаться записать как можно больше информации о профилировании, чтобы выяснить, есть ли проблема в JVM или вне приложения.

Я бы хотел использовать HPROF для сбора как можно большего количества информации.

  1. Есть ли способ заставить HPROF выгружать свою выборку процессора и отчет о распределении памяти каждую минуту вместо завершения JVM?
  2. Существует ли другой, более подходящий профилировщик, который может собирать такую ​​информацию?

Ответы [ 3 ]

1 голос
/ 30 июля 2009

Перво-наперво: вы анализировали дамп потока, когда ваше приложение зависало? В большинстве случаев достаточно информации для устранения неполадок с зависшим Java-приложением ...

Ctrl-Break в окне процесса в Windows или kill -QUIT [pid] в Linux.

1 голос
/ 29 июля 2009

Вместо того чтобы полагаться на файлы дампа, я бы попытался подключить профилировщик к виртуальной машине и оставить его подключенным, пока не произойдет зависание. Затем используйте профилировщик для анализа состояния потоков.

Использование Java 1.4 здесь является незначительной проблемой, поскольку интерфейс отладки 1.4 невелик, но некоторые профилировщики все еще поддерживают его. Я могу особенно рекомендовать YourKit , который является коммерческим, но предлагает ознакомительную лицензию. Это лучший профилировщик, который я использовал, но с некоторым запасом.

0 голосов
/ 30 июля 2009

Сначала я бы попытался определить, действительно ли это ваше приложение или что-то еще.

Есть ли на коробке другие приложения, и если да, то они запускают какой-либо пакет около полуночи. Это может быть ситуация, когда ваше приложение страдает от нехватки ресурсов из-за других вещей, работающих на коробке или из-за потери пропускной способности.

Так было всегда или началось недавно. Если это новый взгляд, посмотрите, что изменилось на коробке в целом, а не только на вашем собственном приложении.

...