Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как поймать утечку памяти 
:(
    Опции темы
kkorsakoff
Дата 7.11.2007, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.10.2005
Где: Санкт-Петербург

Репутация: 3
Всего: 14



Есть подозрение на утечку памяти.

С такими задачами ни разу не сталкивался, поэтому прошу вашего совета: с чего начать, где и как искать.

Какими пользоваться инструментами (желательно бесплатными)?

Честно говоря слабо представляю, как вообще утечку можно обнаружить smile 
PM MAIL WWW ICQ   Вверх
v2v
Дата 7.11.2007, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: 8
Всего: 56



Понятие Сброщик Мусора тебе на знакомо? Вот начни со знакомства с ним. Он быстро упразднит твои подозрения  smile


--------------------
PM   Вверх
kkorsakoff
Дата 7.11.2007, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.10.2005
Где: Санкт-Петербург

Репутация: 3
Всего: 14



Конечно знакомо. И что с ним делать. Просто система рабочая, не имею возможности перебирать все имеющиеся варианты параметров.
С чего начать хотя бы думать, чтобы не бездумно ковырять
PM MAIL WWW ICQ   Вверх
Maksym
Дата 7.11.2007, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 14
Всего: 62



kkorsakoff
Начать можно с того, что добавить в командную строку запуска твоего приложения опцию -verbose:gc и посмотреть как расходуется и чиститься память по мере работы с приложением (запуск разных операций, подключение пользователей, соединение с внешними ресурсами.. в зависимости от специфики).

Добавлено через 3 минуты и 1 секунду
Еще есть очень неплохая и недлинная статья, с теорией и конкретными рекомендациями.
PM MAIL   Вверх
v2v
Дата 7.11.2007, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: 8
Всего: 56



с классификации проблемы.
Вы решили что происходит утечка памяти, почему? Засоряется оперативка? Память не освобождается после выхода из системы? 
ява убирает за собой весь мусор сама, так что это либо проблемы виртуальной машины (пишите в Sun) либо на самом деле дело в другом...


--------------------
PM   Вверх
Royan
Дата 7.11.2007, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

Репутация: 3
Всего: 15



kkorsakoff, и все присутствующие. Надеюсь никто не питает иллюзий того что в Java утечка памяти невозможна. 
Что касается того как ее надо искать. Самый простой способ воспользоваться профилятором и посмотреть как расходуется память в зависимости от совершаемых действий. К сожалению, мне доводилось работать только с платным продуктом JProfiler. Скачать его можно вот отсюда http://www.ej-technologies.com/products/jp...r/overview.html. Думаю там есть какой-то период бесплатного пользования программой, поэтому стоит попробовать.


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
Maksym
Дата 7.11.2007, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 14
Всего: 62



Цитата(Royan @  7.11.2007,  17:14 Найти цитируемый пост)
Надеюсь никто не питает иллюзий того что в Java утечка памяти невозможна. 

Этой крамольной мысли в топике, кажется не звучало. Быстро бы запинали  smile   smile 

Цитата(Royan @  7.11.2007,  17:14 Найти цитируемый пост)
Самый простой способ воспользоваться профилятором и посмотреть как расходуется память в зависимости от совершаемых действий.

Вот и я о том же, только можно и без профайлера для начала попробовать, просто понаблюдать внимательно за событиями коллектора.
PM MAIL   Вверх
kkorsakoff
Дата 7.11.2007, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.10.2005
Где: Санкт-Петербург

Репутация: 3
Всего: 14



Понаблюдал над коллектором.

Выяснилось, что из-за особенностей приложения (надеюсь все таки особенностей, а не утечекsmile) создавалось ОЧЕНЬ много короткоживущих объектов.
DefNew отрабатывал раз в секунду.
Увеличил NewSize до 32 - стало лучше, потом до 48.

Но все равно, нормально ли это, что каждые секунд 15-20 появляется около 40Мб мусора или все-таки искать грабли?

В приложении активно используется Hibernate, jniwrapper.

Нормально ли NewSize делать в 48/64 от всей памяти приложения?

Добавлено через 4 минуты и 21 секунду
Да, и можно ли с помощью профайлера узнать, под что используются эти мегабайты памяти. Хотя бы какие классы...
Давно бы сам попробовал, да найти бы бесплатный.
PM MAIL WWW ICQ   Вверх
Maksym
Дата 7.11.2007, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 14
Всего: 62



Цитата(kkorsakoff @  7.11.2007,  20:11 Найти цитируемый пост)
Но все равно, нормально ли это, что каждые секунд 15-20 появляется около 40Мб мусора

Зависит от того, что делает приложение. Ему есть что делать каждые 20 секунд? smile
PM MAIL   Вверх
kkorsakoff
Дата 7.11.2007, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.10.2005
Где: Санкт-Петербург

Репутация: 3
Всего: 14



Делать то есть что, обрабатывает телефонные вызовы. То есть ситуация вполне нормальная?
PM MAIL WWW ICQ   Вверх
Maksym
Дата 7.11.2007, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 14
Всего: 62



kkorsakoff
На мой взгляд -- да. Главное, чтобы она освобождалась. Перед глазами пример web-приложения, в котором, при каждом клике пользователя в браузере (ну и соотвественно обработки несложного запроса на сервере), отъедается два-три метра. А пользователей и кликов много, тем ни менее коллектор практически мгновенно за ними подчищает.

Добавлено через 1 минуту и 40 секунд
В моей ситуации клиентам этого достаточно, предела памяти в реальных условиях мы никогда не достигаем. Просто посчитали и указали в документации при какой нагрузке мы гарантируем устойчивую работу системы. С запасом.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0507 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.