утечка экземпляров io.netty.channel.nio.NioEventLoop

#netty #netty4

#нетти #нетти4

Вопрос:

Мы используем netty для построения протокола передачи данных. Только сейчас в процессе обновления до netty 4.1 с netty 3.10. После обновления, запуск приложения в течение некоторого времени теперь приводит к сбою из-за исчерпания кучи экземпляров NioEventLoop. Анализ утечки hprof указывает на следующее подозрение на утечку :

 Problem Suspect 1  1,383 instances of "io.netty.channel.nio.NioEventLoop",  loaded by "sun.misc.Launcher$AppClassLoader @ 0xb50b4248" occupy 786,367,920 (66.11%) bytes.   Keywords sun.misc.Launcher$AppClassLoader @ 0xb50b4248 io.netty.channel.nio.NioEventLoop  

Гистограмма объектов с наибольшей сохраненной кучей :

 Class Name | Objects | Shallow Heap | Retained Heap -------------------------------------------------------------------------------- byte[] | 23,476 | 880,160,656 | gt;= 880,160,656 io.netty.channel.nio.NioEventLoop | 11,032 | 1,676,864 | gt;= 789,432,888 io.netty.channel.nio.NioEventLoopGroup| 1,379 | 44,128 | gt;= 775,460,376 --------------------------------------------------------------------------------  

Указывает ли это на какую-то распространенную ошибку при обновлении с netty 3 до 4, связанную с освобождением определенных ресурсов?

Правка : Найден виновник утечки. У нас был клиентский метод, который использовался повторно, и при каждом вызове создавалась новая группа событий, что приводило к утечке ранее созданного пула потоков. Исправил это и решил проблему с памятью.