2014-05-16 3 views
4

Мы использовали jmap в течение ~ 2 лет для измерения размера кучи на большом многосерверном приложении, работающем под Java 6. Мы измеряем каждую минуту. Каждое измерение принимало (прошедшее время) менее 1 секунды.jmap медленнее работает под Java 7, замедляется JVM

Теперь мы тестируем одно и то же приложение под Java 7. И теперь внезапно jmap часто занимает 10 секунд, 20 секунд, а иногда и дольше, и, похоже, он замедляет (или даже останавливает!) JVM в течение этого времени.

Единственная разница, которую мы видим в выходе jmap (между Java 6 и Java 7), - это дополнительная информация о том, сколько строк было интернировано. (И это кажется, так как это часть, которая медленнее.)

Кто-нибудь знает, что происходит, или что изменилось в jmap или Java 7, что может вызвать это?

Мы тестируем, используя «jstat -gc», чтобы получить ту же информацию, и до сих пор это выглядит намного быстрее и, по-видимому, не вызывает замедление приложений, которое мы видели с помощью jmap. Есть ли какие-либо другие предложения по измерению размера кучи, быстро?

Любые мысли приветствуются, заранее.

+0

Возможно, связанные вопросы можно найти по адресу http://stackoverflow.com/questions/20832793/java-get-heap-dump-without-jmap-or-without-hanging-the-application?rq=1 и http: // stackoverflow .com/вопросы/5287010/IS-JVM-остановленных во время выполнения,-jmap? RQ = 1 –

ответ

0

Мне лично очень нравится Oracle Mission Control для контроля размера кучи. У него есть еще много вариантов, но он работает как прелесть, чтобы контролировать размер кучи.