использование памяти netty нормально в этом дампе? - PullRequest
1 голос
/ 09 марта 2012

для пользователей 13K У меня есть следующий дамп памяти.Я буду вставлять 7 лучших потребителей.Нетти, кажется, потребляет слишком много памяти.Это нормально ?

(версия Netty: 3.2.7, реализация IdleStateAwareChannelUpstreamHandler, общее использование памяти Netty: минимум 2,5 ГБ)

 num     #instances         #bytes  class name
----------------------------------------------
   1:      23086640      923465600  org.jboss.netty.util.internal.ConcurrentHashMap$Segment
   2:      28649817      916794144  java.util.concurrent.locks.ReentrantLock$NonfairSync
   3:      23086640      554864352  [Lorg.jboss.netty.util.internal.ConcurrentHashMap$HashEntry;
   4:        118907      275209504  [I
   5:       5184704      207388160  java.util.concurrent.ConcurrentHashMap$Segment
   6:       5184704      130874832  [Ljava.util.concurrent.ConcurrentHashMap$HashEntry;
   7:       1442915      115433200  [Lorg.jboss.netty.util.internal.ConcurrentHashMap$Segment;

1 Ответ

1 голос
/ 10 марта 2012

Похоже, что использование памяти не является нормальным.

Вот некоторые факты об использовании внутренней памяти Netty

  • Один канал имеет два ReentrantLocks, (одинблокировка чтения, одна блокировка записи)

  • Канал хранит все ссылки на каналы внутри org.jboss.netty.util.internal.ConcurrentHashMap внутри и автоматически удаляет при закрытии (это назначает уникальные идентификаторы канала).

  • ChannelGroup хранит ссылки на каналы в org.jboss.netty.util.internal.ConcurrentHashMap при добавлении () и автоматически удаляет при закрытии.

  • Будет один ConcurrentHashMap$HashEntry на элемент, сохраненный вorg.jboss.netty.util.internal.ConcurrentHashMap.

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

...