IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Создал окно, удалил окно, память потекла.
сообщение
Сообщение #1


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +



while true do begin
E := CreateWindow('edit', '',
WS_CHILD or WS_CLIPSIBLINGS or WS_VISIBLE or ES_AUTOHSCROLL or ES_READONLY, 0, 0, 0, 0, H, 0, 0, nil);
DestroyWindow(E);
end;


Диспетчер задач говорит, что память нехило течёт.
Что делать?

Тут (http://forum.sources.ru/index.php?showtopic=238841&view=showall) сказали, что это винда мудрит, что память освободится потом. Так что - не удалять тогда ненужные окна, а оставлять на будущее, когда снова появятся? Их кол-во может достигать бесконечности и заранее, при старте, создать все нужные нельзя.

Добавлено через 4 мин.
Память дошла до 12 метров и успокоилась.
Остался только один вопрос - как тогда отлаживать программу на предмет утечек?


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  627  +


Цитата
Остался только один вопрос - как тогда отлаживать программу на предмет утечек?
В смысле, проверять, не текут ли хэндлы? Сделай отображение столбца "USER Objects" в менеджере задач, и смотри, не текут ли они, а не Working Set ...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






> Сделай отображение столбца "USER Objects" в менеджере задач

Это где? Это из винды-семёрки?
Ну там есть монитор ресурсов, на вкладке "память" столбики "Завершено" (13 МБ), "Рабочий набор" (16МБ), "Общий" (4МБ), "Частный" (12МБ)
Куда смотреть?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  627  +


Цитата
Это где?
Здесь:
Прикрепленное изображение

(для вызова этого окна - View -> Select Columns). Это есть, насколько мне известно, во всех версиях Windows...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






А, понял.
Память жрётся, кол-во объектов - не меняется, стабильно.
Что за чудеса?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  627  +


Проверял все типы объектов, я надеюсь? И хэндлы, и USER-objects, и GDI-objects (может, чего-нибудь не закрывается)?

Запустил простейшую WinAPI программку, которая по нажатию кнопки запускает вот тот самый вечный цикл создания/разрушения окна - так память даже не шелохнулась, прождал около 10 минут - ни одна цифра не поменялась, ни в стандартном Task Manager-е, ни в ProcessExplorer-е от Марка Руссиновича...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Да, количество дескрипторов тоже не меняется, а память куда-то течёт, причём только в начале, потом упирается в некий потолок и остаётся на нём.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






В общем, я обнаружил, что память течёт только при запуске из среды и только под вин7. При запуске из проводника глюка нет.
Будем думать дальше.
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 25.04.2024 2:29
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name