Главная Контакты


  На сайте

  Java, JavaScript
  Документация Perl
  Документация PHP
  Документация ASP
  Новости сайта
  Flash
  Интернет протоколы
  Apache
  Уроки программирования
  Язык программирования C
 


Java: управление ресурсами


Казалось бы - какие могут быть Memory Leak (утечки памяти), когда есть GC. Но, тем не менее, они возможны. Эти утечки отличаются по своему происхождению от утечек в C/C++ (таких в Java вообще быть не может, за исключением возможных ошибок в JVM, но этот вариант мы здесь не рассматриваем). Они возникают из-за забытых ссылок.

Например - в GUI часто используется механизм слушателей (Listener-ов). Это когда один объект регистрируется в другом объекте для обратного вызова по наступлению какого-нибудь события. Проблема тут может быть одна - если Вы забудете разрегистрировать объект, когда он становится ненужным. При этом он останется болтаться в списке, ну и GC, разумеется, не будет удалять этот объект, пока не придёт время удалить объект со списком (а этого может и не случиться до завершения программы).

В результате - список будет пухнуть, пухнуть, программа работает всё медленней и медленней, и, в конце концов, вылетает OutOfMemoryError.

Отследить такой сценарий можно при помощи специальных программ - профайлеров. Самые известные на данный момент - JProbe и OptimizeIt.

Бороться с этими вещами довольно просто - надо не забыть разрегистрироваться. Если Вы уверены, что объект-слушатель удаляется вместе с объектом - источником событий (например, когда они оба сидят внутри диалога), то этого делать не нужно - GC сам с ними разберётся. Кэширование объектов.

Кэширование объектов применяется для повышения производительности. Когда объект меняется редко (или вообще не меняется в процессе работы программы), то часто полезно прочитать его один раз, и запомнить на него ссылку. Но ссылка - это противоречие между алгоритмом работы GC, а значит, этот объект никогда не будет собран GC (даже если он больше не нужен). Иногда это большого значения не имеет (памяти много, или все объекты требуются очень часто), но чаще желательно всё-таки иметь возможность почистить неиспользуемые объекты.

Другие статьи по теме:

- учим java. этап первый: подготовительный
- революция java
- Java-приложение: заглянем внутрь
- почтовая программа - своими руками!
- возможности языка java


Голосование:
Чего Вы хотели бы видеть больше на сайте?

Статей, документации
Скриптов
Программ для вебмастера
Я не знаю



Другие голосования

Обмен кнопочками:



Приглашаем Вас обменяться кнопочками! Обращайтесь к администратору.


Новые статьи:


Наши партнеры:





2006-2024 © SMTI.RU
Главная страница | Связаться с нами