Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / корректное освобождение памяти в java / 7 сообщений из 7, страница 1 из 1
23.09.2016, 08:53
    #39313878
Mari.P
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
корректное освобождение памяти в java
дано:
Java project
По таймеру один раз в полчаса должен изменяться текст в компоненте JLabel

Делаю так:
Код: java
1.
2.
3.
public class MyProg extends JFrame {
   
  private JLabel TimeLabel;




Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
 public MyProg() {
      
	   
    // заголовок окна 	   
     super("Окно"); 
    // делаем окно максимальным 
     setExtendedState(JFrame.MAXIMIZED_BOTH);
     
     
//////////////////////создали листенер ////////////////////////////////// 
ActionListener timerlistener = new ActionListener() {
public void actionPerformed(ActionEvent e)  {

 long curTime = System.currentTimeMillis();
 String curStringDate = new SimpleDateFormat("dd.MM.yyyy HH.mm.ss").format(curTime);
 buttonsPanel.remove(TimeLabel);
 TimeLabel=new JLabel("          "+curStringDate);
 buttonsPanel.add(TimeLabel);
 validate(); 
                                                          }
                                                                  } 
/////////////////////////////////////////end listener////////////////////////////////


   Timer timer1 =new Timer(1800000,timerlistener);
   timer1.setInitialDelay(3000);
   timer1.start();                                                       
   long curTime = System.currentTimeMillis(); 
   String curStringDate = new SimpleDateFormat("dd.MM.yyyy HH.mm.ss").format(curTime);
        TimeLabel=new JLabel("          "+curStringDate);
        
        /* Кнопки обновить, закрыть  */
        buttonsPanel = new JPanel(new FlowLayout());
        buttonsPanel.add(TimeLabel);
        add(buttonsPanel, BorderLayout.SOUTH);
	      
} 




Проблема - некорректно идет небольшая утечка памяти. Я думала, что buttonsPanel.remove(TimeLabel) очищает полностью память,
выделенную под компоненты, подскажите пожалуйста уважаемые профессионалы, как в этом случае грамотно освобождать память.
...
Рейтинг: 0 / 0
23.09.2016, 09:22
    #39313893
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
корректное освобождение памяти в java
Как вы обнаружили что "идет небольшая утечка памяти". И почему решили что она идет именно отсюда?
...
Рейтинг: 0 / 0
23.09.2016, 09:26
    #39313899
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
корректное освобождение памяти в java
Mari.PПроблема - некорректно идет небольшая утечка памяти.
Т.е. старые JLabel переживают gc. И в jconsole видно, что их всех держит buttonsPanel?
...
Рейтинг: 0 / 0
23.09.2016, 09:29
    #39313901
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
корректное освобождение памяти в java
В смысле в VisualVM
...
Рейтинг: 0 / 0
23.09.2016, 09:47
    #39313925
Mari.P
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
корректное освобождение памяти в java
Может я неправа, но смотрю в диспетчере задач Windows процесс javaw.exe
при запуске программы этот процесс занимал в памяти 36 758 КБ,
а спустя день работы программы 50 874КБ
...
Рейтинг: 0 / 0
23.09.2016, 10:03
    #39313941
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
корректное освобождение памяти в java
Mari.P,

Это очень грубый инструмент. :)
У JVM свой менеджер памяти. И она не обязана отдавать захваченную память операционке.
Собственно отдавать память без особой на то необходимости - лишняя работа. Потом опять захватывай. :)
...
Рейтинг: 0 / 0
23.09.2016, 10:10
    #39313949
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
корректное освобождение памяти в java
Mari.P,

Запустите JDK/bin/jvisualvm.exe , подключитесь к вашему Java процессу. И научитесь пользоваться этой штуковиной. Пригодится.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / корректное освобождение памяти в java / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]