2016-03-31 27 views
1

Uygulama sunucularımızdan biri bellek dolduğunda bir Java yığın dökümü analiz ediyordum. Eclipse Memory Analyzer kullanıyordum. Aşağıdakileri rapor etti. tarafından yüklenen "akka.dispatch.Dispatcher $$ Anon $ 1" arasında

bir örneği "sun.misc.Launcher $ AppClassLoader @ 0xc5602128" 675.632.768 (73.50%) bayt işgal eder.

  1. $$ anon ve sınıf adına 1 $ ne anlama geliyor?
  2. Yığın alanın% 73.5'ini alan nesne tam olarak nedir? Sebep ne olabilir?

cevap

1
  1. İlk anonim sınıf. Kaynak koduna bakıyorum Posta kutusu olduğunu tahmin ediyorum: https://github.com/akka/akka/blob/master/akka-actor/src/main/scala/akka/dispatch/Dispatcher.scala#L89 (Özellikler ile oluşturulan Scala nesneleri anonim sınıflara derlenmiş)
  2. Kullandığınız araç, hangi nesnelerin doğrudan Mailbox tarafından tutulduğunu/başvuruda bulunduğunu ve hangi dosyaları kullanabileceğini söyleyebilmelidir. bellek. Muhtemelen aktörler, mesajları yeterince hızlı işlemezler.