У меня есть приложение WebSphere Portal, которое запускает четыре экземпляра на одном компьютере, и после примерно 7 дней работы в собственной памяти только 130-150 МБ адресного пространства (с использованием PMAP).Где-то еще через 7-10 дней эта цифра падает значительно ниже 100 МБ (что мы считаем опасным и начинаем перерабатывать JVM).Если мы не выполним перезапуск, JVM в конечном счете завершится сбоем с сигналом SIGSEGV.
Мы провели некоторое начальное исследование количества классов и размера кода JIT.Количество классов растет, но медленно, начиная с 50 тысяч, примерно до пары сотен в день.Размеры JITC достигают примерно 210 МБ через 7 дней, а после этого увеличиваются примерно на 1 МБ в день.В нашем предыдущем опыте мы не обнаружили, что это зловещие значения.
Что нам нужно, чтобы разбить то, что находится в собственной куче, будь то потоки (все потоки кажутся нормальными, и мыиметь фиксированные пулы потоков), пулы строк, пулы констант, байт-код или что-либо еще.
Один из способов, который мы сейчас пытаемся, - это уменьшить порог отражения до 0 (отключение средств доступа к байт-коду для отражающих классов).Это приложение использует много точек и много размышлений, поэтому мы надеемся, что есть хороший шанс, что это поможет.
Любой совет приветствуется.