0

我正在使用一个运行了几个小时的简单测试程序。

public static void main(String[] args)  {
    for (int i=1; i<500; i++) {
        run();
    }
}

public static void run() {
    new Thread(new Runnable() {

        @Override
        public void run() {
            while (true) {
                new String("Hello World");
            }
        }
    }).start();
}

当我通过 PS 或 pmap 监控进程时,RSS 部分会增加,而 jvisualvm 报告堆是稳定的。

如果我总结所有 RSS 匿名映射,它们会随着时间的推移而增加。

我正在使用带有 Sun JDK 1.6.0_31 的 Centos 5.7 x64。

RSS 是否应该随着时间的推移而增加?

4

1 回答 1

0

随着后台任务将更多代码/资源带入内存,RSS 会随着时间的推移而增加。在您的示例中,它应该不多。注意:如果您在另一个 JVM 实例中使用共享库,则该共享库会加载到内存中,这可能会增加您的 RSS。

通常最好找到最简单的例子来证明你的问题。它必须是 500 个线程,还是只是您拥有的核心数?当你有一个繁忙的线程时会发生这种情况吗?如果你创建一个new Object()代替呢?如果您忙于等待而没有创建对象怎么办?

于 2012-02-21T16:49:27.460 回答