#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, связанную с освобождением определенных ресурсов?
Правка : Найден виновник утечки. У нас был клиентский метод, который использовался повторно, и при каждом вызове создавалась новая группа событий, что приводило к утечке ранее созданного пула потоков. Исправил это и решил проблему с памятью.