2015-09-22 3 views
2

Я trying to use JConsole to see if I have a memory leak, но не знаю, что искать. Если бы я должен был догадаться, использование памяти всегда должны идти вверх, несмотря на сбор мусора, как это:Что такое утечка памяти в JConsole?

enter image description here

Как вы можете увидеть в моем другом С.О. вопрос, я вижу, зазубренный край, где использование памяти идет вверх, даже если браузер закрыт, и никакие запросы не ударяют мой локальный сервер Tomcat, а затем спуститесь.

enter image description here

Что утечка памяти в Java "выглядеть" в JConsole?

+1

Это действительно зависит от многих вещей, особенно от сборщика мусора, который вы выбрали, но то, что я обычно ищу, это тот факт, что со временем использование кучи продолжает расти. Таким образом, во втором каракуле нижняя точка в «долинах» постепенно ползет вверх. –

+0

@ RoddyoftheFrozenPeas, и я думаю, насколько быстро он ползет вверх, зависит от типа утечки. – gwg

+0

После каждой полной коллекции используемое количество продолжает расти. Хотя это может означать, что вам просто нужно больше памяти, чем ваша программа, как было дано, и если бы вы дали ей больше, она бы вышла из себя. –

ответ

2

Я думаю, что лучший способ узнать, как выглядит утечка памяти, - это сделать эксперимент. Попробуйте что-то вроде этого, чтобы создать утечку памяти:

Collection<Object> data = new LinkedList<>(); 
    while(true) { 
     long[] canBeGarbageCollected = new long[10000]; 
     long[] canNotBeGarbageCollected = new long[100]; 
     data.add(Arrays.asList(canNotBeGarbageCollected)); 
    } 

Кроме того JConsole вы также VisualVM, который имеет хороший плагин под названием «Visual GC». Java Mission Control с функцией Flight Recording может предоставить вам множество подробностей. Очень мощный инструмент существует в командной строке, а также:

jstat -gcutil -h20 $PID 1000 

Это покажет, что утечка памяти в конечном счете приведет к 100% утилизации старых пространства (O) и процессор будет тратить все больше и больше времени, делая полный мусор коллекции (FGCT)