![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| saneea |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 205 Регистрация: 13.7.2005 Репутация: нет Всего: 0 |
Я сам на Java не программирую. Но считал, что из-за сборщика мусора в ней нет утечек памяти. И вот теперь мне сказали, что утечки памяти в Java всё-таки возникают, причём только по одной причине (но не сказали почему). Вот собственно и вопрос: откуда утечки памяти в Java?
|
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
Висячие ссылки. Объект не будет удален сборщиком мусора пока не него есть ссылка у другого, "живого" объекта.
|
|||
|
||||
| Skynin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 1.7.2007 Где: Харьков Репутация: 6 Всего: 10 |
+ к powerOn
возникают при неаккуратной работе с слушателями - считаем что объект уже недоступен, но пока его слушатель находится в списке у другого объекта - сборщик мусора естественно освобождать память не будет. |
|||
|
||||
| saneea |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 205 Регистрация: 13.7.2005 Репутация: нет Всего: 0 |
Короче, как я понял, такое происходит если появляются циклические ссылки. Спасибо!
|
|||
|
||||
| Skynin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 1.7.2007 Где: Харьков Репутация: 6 Всего: 10 |
Напрочь неверно поняли.
GC у Java "глубоко все равно" на циклические ссылки. Поэтому просьба на "такое происходит если появляются циклические ссылки." не ссылаться на меня или кого-то на форуме. Я уже разъяснял про циклические ссылки на этом форуме: Соберет ли GC такие объекты Вольный перевод с комментариями Plug memory leaks in enterprise Java applications Утечки памяти бывают 4ех видов: 1. Неизвестные или нежелательные ссылки на объект. Обычно ссылка попадает в коллекцию долгоживущего объекта, а убрать ее забывают, или не знают что нужно убрать. Часто густо - забывчивость отцепить слушателя, который содержит ссылку на объект-владелец. Или кривоватая фабрика, которой нужно сообщать что этот объект уже не нужен. 2. Долго-живущие статические объекты. Ссылка статическая, и хотя объект уже не нужен, если не очистили будет жить до конца жизнедеятельности программы. Обычно такая ссылка упрятана где-то в глубинах фабрики и прочего. 3. Ошибки освобождения нативных ресурсов - при использовании JNA, JNI 4. Глюки в библиотеках AWT, Swing, SWT Я бы добавил 5ый класс, который встречается в серверах приложений - не освобождающаяся Perm зона, которая забивается кодом не нужных уже сервлетов. Правда он не связан с собственно кодом на Java, а скорей с неадекватной настройкой запуска JVM Это сообщение отредактировал(а) Skynin - 7.11.2009, 19:45 |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |