![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Читаю сейчас книгу Брюса Тейта "Горький вкус Java". Книга посвящена т.н. "анти-паттернам", то есть типичным ошибкам проектирования и написания Java-приложений. Одна из глав посвящена проблемам утечки памяти, которая возможна и в Java. В числе различных способов решения этой проблемы (с ограниченной областью применения) предлагается использование неких "слабых" ссылок. Но не объясняется - что это такое?
P.S. Еще там упоминаются "мягкие" и "фантомные" ссылки. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| anonymouse |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 18.8.2004 Репутация: нет Всего: 1 |
--------------------
Много чего интересного... |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
К той статье я добавлю еще одно: SoftReference всегда будет очищенна перед выбрасыванием OutOfMemoryError (и по опыту они всегда очищаются при вызове System.gc()), а вот для WeakReference это не гарантируется. Они очищаются в зависимости от веремени последнего доступа (получить OutOfMemoryError при использовании WeakReference вполне реально). Есть еще класс WeakHashMap который использует WeakReference, для хранения объектов, удобно использовать для кешей.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Как я понял, суть в следующем: я могу не добавлять, скажем, объект в коллекцию напрямую, а "обернуть" его в SoftReference, и тогда правила сборки мусора для него будут отличаться от привычных (в сторону большей вероятности очистки). Правильно?
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
В общем случае нет, т.к. у SoftReference будут не корректно работать hashCode(), equals() и compareTo(). Плюс не все коллекции нормально переварят "неожиданную" потерю объектов. Посмотри как реализован WeakHashMap. Это сообщение отредактировал(а) LSD - 9.9.2005, 11:17 -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Ok, посмотрю.
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
![]()
|
| Правила форума "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. |