Разбивка собственного использования памяти в процессе JVM на SLES - PullRequest
0 голосов
/ 21 сентября 2010

У меня есть приложение WebSphere Portal, которое запускает четыре экземпляра на одном компьютере, и после примерно 7 дней работы в собственной памяти только 130-150 МБ адресного пространства (с использованием PMAP).Где-то еще через 7-10 дней эта цифра падает значительно ниже 100 МБ (что мы считаем опасным и начинаем перерабатывать JVM).Если мы не выполним перезапуск, JVM в конечном счете завершится сбоем с сигналом SIGSEGV.

Мы провели некоторое начальное исследование количества классов и размера кода JIT.Количество классов растет, но медленно, начиная с 50 тысяч, примерно до пары сотен в день.Размеры JITC достигают примерно 210 МБ через 7 дней, а после этого увеличиваются примерно на 1 МБ в день.В нашем предыдущем опыте мы не обнаружили, что это зловещие значения.

Что нам нужно, чтобы разбить то, что находится в собственной куче, будь то потоки (все потоки кажутся нормальными, и мыиметь фиксированные пулы потоков), пулы строк, пулы констант, байт-код или что-либо еще.

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

Любой совет приветствуется.

Ответы [ 2 ]

0 голосов
/ 26 октября 2010

После продолжительного расследования это привело к ошибке WebSphere: PK72252: ВЫЗОВЫ КЛАССАЛОЧКИ.GETRESOURCEASSTREAM ЗАМЕДЛЕНЫ Исправлено в 6.0.2.33 .

0 голосов
/ 23 сентября 2010

Может быть немного назад и вперед, но вы зарегистрировали GC и убедились, что со временем куча Java не растет?Посмотрел ваш пермский космос?Тем не менее, SIGSEGV интересен, и я ожидаю, что при любых проблемах с записью в Java произойдет сбой JVM-ish.

...