我正在使用Java Visual VM的内存采样功能,我无法回答这些问题:
为什么创建了这么多实例?
为什么这些实例和字节数会不断增加?
例如,我创建了一个非常简单的Java程序,如下所示:
public class TestMemory{
public static void main(String[] args) throws InterruptedException {
System.out.println("Hello");
Thread.sleep(60 * 60 * 1000);
}
}
我可以在Java Visual VM中看到有611个类。实例数量从25,000增加到接近50,000,然后回落到25,000左右。实例减少的原因可能是由GC引起的,但我不知道为什么这些数字是如此动态,即使我没有对我的程序做任何事情。
答案 0 :(得分:4)
您正在查看的实例数和字节数为cost of monitoring an app from VisualVM。 VisualVM正在轮询各种JVM MBean,不断分析应用程序的价值变化。
要确认这一点,您可以转到采样器标签。单击每个线程分配子选项卡。查看忙线程是否为RMI TCP连接(n)。该线程每秒应具有高字节分配。
我很好奇如何优化这一点,因此发布了更具体的question。