/ Знаци за изтичане на Java памет - java, windows, memory, desktop

Знаци за изтичане на Java памет - java, windows, memory, desktop

Аз правя заявление и проследявам използването на паметта му. Паметта на приложението е около 58 676 К, както се вижда по-долу. въведете описанието на изображението тук

Това е моят GUI.

въведете описанието на изображението тук

Този бутон за затваряне има функция, която прави този панел невидим.

private final ActionListener closeButtonAL = new ActionListener(){

@Override
public void actionPerformed(ActionEvent e) {
timeUtilities.getPanel().setVisible(false);
}

};

Имам и бутон, който прави панела видим отново.

private final ActionListener showPanelAL = new ActionListener(){

@Override
public void actionPerformed(ActionEvent e) {
timeUtilities.getPanel().setVisible(true);
}

};

Панелът е инициализиран още преди приложението да започне да се показва.

Проблемът ми е, че само с GUI се появява и затваря отново и отново увеличава паметта на приложението.

Не е ли това някакво изтичане на памет? Независимо от отговора, как да предотвратя този въпрос?

въведете описанието на изображението тук

Отговори:

1 за отговор № 1

Трябва да използвате профилиращо устройство, за да откриете изтичането на паметта.

В NetBeans най-отгоре до бутоните "Run Project" и "Debug Project" е бутон "Профил на проекта" (Alt-F2).

Първо пуснете, той може да ви помоли да калибрирате или нещо такова.

Afterwars, можете да изберете да анализирате CPU или Memory. Ако кликнете върху Памет, маркирайте "Обикновено" и щракнете върху Изпълни, можете да стартирате проекта си и да видите какво използва паметта.


1 за отговор № 2

Не, това не може да е знак за изтичане на паметта. Защото, когато затворите и отворите GUI няколко пъти, приложението ви може да създава и отхвърля някои обекти. Но JVM може и да няма събрани боклуци. Ако искате реалната картина да използвате инструмент за профилиране. Вземете купчини сметища с течение на времето след като GC работи. Това ще ви каже какво още остава в паметта.

Това може да ви помогне да стесните вашия лов за възможно изтичане на паметта.

Най-прости инструменти за профилиране.

  1. Netbeans идва с вграден профил.
  2. Jconsole също може да помогне малко
  3. VisualVm също може да помогне малко.

Също така вижте тази връзка как да анализирате heapdumps