2013-06-10 16 views
7

Uygulamamın bellek kullanımını optimize etmeye çalışıyorum. Ne yazık ki, uygulamamın -Dcom.sun.management.jmxremote ile çalıştırılması ve VisualVM aracılığıyla bağlanması, yığın kullanımında oldukça büyük bir etkiye sahip. İlk başta, benim uygulama problemim olduğunu düşündüm, gerçekten JMX'in genel yükü olduğunu doğrulamak için çok basit bir program yazana kadar. Aşağıda faaliyetin görüntüsü.VisualVM'den yığın kullanımının etkisi nasıl azaltılır?

this'u okuduktan sonra, bunun VisualVM'nin bağlı uygulamayı sürekli olarak yoklamasıyla elde edilen verileri almasından dolayı olduğunu anlıyorum. VisualVM'nin bellek örnekleyicisine bakarak bunu doğruladım. RMI TCP Bağlantısı (n) iş parçacığı, 180kb/saniye ayırıyor.

Sorum, VisualVM'in yığın kullanım etkisini azaltmanın bir yolu var mı? Yığın bilgisi ile ilgilendiğim için yoklama aralığının değiştirilmesi tercih edilmeyebilir. Bu mümkün değilse, VisualVM için kullanılan verileri hariç tutabilir miyiz? En azından başvuruma daha fazla odaklanmak istiyorum.

Object object = new Object(); 
synchronized (object) { 
    object.wait(); 
} 

visualvm en yığını izleyicisi faaliyetindedir Running

enter image description here

+0

Elinizi Java Uçuş kayıt cihazında denediniz mi, çok düşük bellek yüküne sahip mi? JDK 7 ve üstü ile birlikte gönderilir. –

cevap

3

yapılacak basit şey yoklama aralığını azaltmaktır. Etki, veri alma oranı ile orantılıdır.

Yaptığım şey, yerel bellekteki her şeyi yapan ve böylece yığın üzerinde hiçbir etkisi olmayan YourKit'i kullanmaktır.

İlgili konular