2016-03-31 2 views
1

Я анализировал дамп кучи Java, когда на одном из наших серверов приложений закончилась нехватка памяти. Я использовал Eclipse Memory Analyzer. Он сообщил следующее.

Один экземпляр "akka.dispatch.Dispatcher $$ Анон $ 1" загружен "sun.misc.Launcher $ AppClassLoader @ 0xc5602128" занимает 675,632,768 (73,50%) байт.

  1. Что конструкции $$ Анон и $ 1 в имени класса означает?
  2. Что именно представляет собой объект, занимающий 73,5% кучи пространства? Что может быть причиной?

ответ

1
  1. Первый анонимный класс. Глядя на исходный код, я предполагаю, что это почтовый ящик: https://github.com/akka/akka/blob/master/akka-actor/src/main/scala/akka/dispatch/Dispatcher.scala#L89 (объекты Scala, созданные с помощью признаков, скомпилированы для анонимных классов)
  2. Инструмент, который вы используете, должен быть способен определить, какие объекты непосредственно хранятся/ссылаются почтовым ящиком и фактически используют Память. Вероятно, актеры просто недостаточно обрабатывают сообщения.
Смежные вопросы