![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| gelo86 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 388 Регистрация: 26.10.2007 Репутация: нет Всего: нет |
Добрыи день. Вот почитал про softreference и везде примеры с кешами. Типо если уже мало памяти осталось то разумеется можно чтото викинуть с кеша
|
|||
|
||||
| tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 31 Всего: 132 |
ehcache предоставляет достататочно конфигурационных настроек, чтобы можно было контролировать использование памяти под кэш. Поведение ehcache при этом предсказуемо и зависит от политики удаления из кэша - LRU, LFU или FIFO. Представь себе теперь что для всех ссылок на элементы кэша используются SoftReference. Получается что указание политики бессмысленно поскольку JVM может выкинуть из кэша первый попавшийся объект. В лучшем случае кэш будет адекватно работать до тех пор пока достаточно памяти, а потом могут поудаляться как раз те объекты, которые сейчас активно используются. Тем не менее, ehcache иногда использует SoftReference. Например, в случае асинхронной репликации. В этом случае элементы кэша складываются в очередь и синхронизируются через некоторое время. Если возникли какие-то сбои в работе сети, то очередь может бесконечно разрастаться, тогда использование SoftReference вполне оправдано, хотя в этом случае тоже не будет никакой логики в том, что именно будет синхронизировано между узлами. Естественно, это все касается кэша в памяти. Логика кэширования на диске от SoftReference никак не пострадает.
Не знаю как дело обстоит в JBoss Cache, но скорее всего там тоже не используются SoftReference для хранения элементов кэша. Что касается примеров с кэшами и SoftReference, то это простейший пример, с помощью которого можно продемонстрировать работу SoftReference, в реальных приложениях такой кэш вряд ли применим. |
|||
|
||||
| gelo86 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 388 Регистрация: 26.10.2007 Репутация: нет Всего: нет |
Можно поточнее про . FIFO я так понимаю (First In First Out), но тогда получается кеш на адин запорос чтоли?
Да в ehcache можна задать сколко елементов держат в памяти. А если всетаки в кеше будет намного менше елементов и память закончится? Кеш сам чемто помагает в таких ситуациях? А что за LRU, LFU? |
|||
|
||||
| tux |
|
||||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 31 Всего: 132 |
Как это на один? Не понятно.
Если память закончилась - это значит, что либо где-то в приложении утечка памяти либо реально недостаточно хипа для работы. Решения проблемы зависят от логики приложения. Либо уменьшать кэш либо увеличивать хип либо придумывать что-то еще. Например, объекты большого размера можно просто не ложить в кэш. ehcache ничем в этом случае не поможет - в параметрах у него можно задать только количество элементов. На это есть свои причины. ehcache никаким простым способом не может определить сколько памяти реально отнимают объекты, находящиеся в кэше. По крайней мере мне такой способ не приходит в голову, а JVM не предоставляет таких возможностей. http://ehcache.sourceforge.net/EhcacheUser....html#id.s7.1.1 Добавлено через 14 минут и 29 секунд Кстати, вот рекомендации по тюнингу сборки мусора для ehcache - http://ehcache.sourceforge.net/EhcacheUserGuide.html#id.s13. |
||||
|
|||||
![]()
|
| Правила форума "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. |