3

我正在使用 Java Visual VM 的内存采样功能,但无法回答以下问题:

  1. 为什么会创建这么多实例?

  2. 为什么这些实例和字节数不断增加?

例如,我创建了一个非常简单的 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 引起的,但我不知道为什么这些数字如此动态,即使我没有对我的程序做任何事情。

4

1 回答 1

6

您正在查看的实例数和字节数是从 VisualVM 监控应用程序的成本。VisualVM 正在轮询各种 JVM MBean,不断分析应用程序的值变化。

要确认这一点,您可以转到Sampler选项卡。单击每个线程分配子选项卡。查看繁忙线程是否为 RMI TCP Connection(n)。这个线程每秒应该有一个高字节分配。

我也很好奇如何优化它,因此发布了一个更具体的问题

于 2013-06-11T00:49:08.723 回答