Страница: 1 |
Страница: 1 |
Вопрос: Memory Leak
Добавлено: 20.02.06 18:12
Автор вопроса: LamerOnLine | ICQ: 334781088
Проблема в сабже.
На машине круглосуточно трудится приложение, для вываливания мусора из памяти используется SetProcessWorkingSetSize. Но результат не удовлетворяет - хотя Task Manager и показывает его размер порядка 8 метров, через месяц работы своп файл докатывается до полутора гигов. При закрытии приложения - сползает до двухсот метров.
Кто знает - может ли бы проблема в SetProcessWorkingSetSize или утечка только в другом месте.
И можно ли принудительно зачистить своп файл (хотя это, конечно, бред)?
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #1
Добавлено: 20.02.06 20:44
Думаю, обычная утечка памяти. Ты чего-то не освобождаешь, обращений к этому чему-то не происходит, оно скидывается в своп, где и складируется. Без SetProcessWorkingSetSize занимаемая память увеличивается?
Номер ответа: 2
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #2
Добавлено: 20.02.06 23:03
А в настройках принудительный не изминяемый размер свопа чё не задать?
Номер ответа: 3
Автор ответа:
ANDREY
Вопросов: 0
Ответов: 33
Профиль | | #3
Добавлено: 28.02.06 00:06
Если приложение плохо спроэктировано, то как тут может помочь какая нибудь API-функция? Если задать предельный размер свопа - приложение будет просто вылетать при попытке привысить этот размер.
Номер ответа: 4
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #4
Добавлено: 28.02.06 00:29
+ CoFreeUnusedLibraries
Кажись существуют проги для обнаружения утечек памяти... Не помню как называется, но подобной пользовался... для дельфи правда
Номер ответа: 5
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #5
Добавлено: 28.02.06 12:01
CoFreeUnusedLibraries слабовато помогает при многопоточности. Кроме того, не думаю что фишка в невыгруженных библиотеках. Скорее всего либо объект какой-то не умер, либо после своей смерти некорректно освободил память
Номер ответа: 6
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #6
Добавлено: 28.02.06 17:14
Скорее уж прихватил ее на тот свет А процесс остался должен
Номер ответа: 7
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #7
Добавлено: 28.02.06 19:08
Сначала грешил на SetProcessWorkingSetSize - ведь растет своп а не физпамять. Думал заменить на EmptyWorkingSet, но ведь это один хрен. Похоже, придется процессу ребутиться раз в несколько суток
Номер ответа: 8
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #8
Добавлено: 11.03.06 21:02
Популярнейшая тулза для обнаружения утечки памяти - valgrind