Для настройки GC вам обычно не требуется время жизни каждого объекта, а хороший обзор пулов в реальном времени.Первое, что я обычно делаю, это смотрю на различные пулы, используя visualgc, который является частью jvmstat (http://java.sun.com/performance/jvmstat/).). Затем я перехожу к проверке на возможные утечки памяти. Это, безусловно, лучший способ, с которым я столкнулся.
А. В jconsole вы можете увидеть, не перетекали ли вы в старый род преждевременно (это означает, что eden был слишком большим, чтобы поместиться в оставшегося в живых даже после его gc). Если это так, проверьте свой молодой размери соотношение выживших и попытайтесь отрегулировать их так, чтобы оно не переполнялось.
B. Кроме того, во время «нормальной» работы рекомендуется взглянуть на гистограмму поколений выживших в visualgc и убедиться, что поколенияопустошены задолго до того, как станут слишком старыми.
Если они все-таки разойдутся таким образом, у вас может возникнуть утечка памяти. Затем я бы сбросил память с помощью jconsole и взглянул бы на нее с помощью MAT (http://www.eclipse.org/mat/):
- Запустите jconsole.exe и вызовите операцию dumpHeap () в HotSpotDiagnostic MBean (убедитесь, что имя файла заканчивается на .hprof)
- Откройте дамп в MAP и посмотрите, узнаете ли вы какой-либо объект, занимающий больше места, чем вы ожидаете.
Удачи.