Диагностика утечки RSS в Java, когда куча стабильна - PullRequest
0 голосов
/ 21 февраля 2012

Я использую простую тестовую программу, которую запускаю несколько часов.

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 и anon, они со временем увеличиваются.

Я использую Centos 5.7 x64 с Sun JDK 1.6.0_31.

Должно ли RSS увеличиваться со временем?

1 Ответ

0 голосов
/ 21 февраля 2012

RSS может со временем увеличиваться, так как фоновые задачи приносят больше кода / ресурсов в память.В вашем примере это не должно быть много.Примечание: если вы используете разделяемую библиотеку в другом экземпляре JVM, эта разделяемая библиотека загружается в память, и это может увеличить ваш RSS.

Обычно лучше всего найти простейший пример, демонстрирующий вашу проблему.Это должно быть 500 потоков или просто количество ядер, которые у вас есть?Это происходит, когда у вас есть один занятый поток?Что если вы создадите new Object() вместо этого?Что если вы заняты ожиданием, не создавая объект?

...