Форум: "Основная";
Текущий архив: 2007.06.10;
Скачать: [xml.tar.bz2];
ВнизУтечка памяти в TOpenDialog? Найти похожие ветки
← →
gosha73 (2007-04-14 15:17) [0]Привет друзья.
Что-то непонятное творится. Вроде все делаю как положено, а все равно вижу в диспетчере задач, что память неимоверно утекает с каждым кликом на кнопку. Привожу код клика:procedure TForm1.BitBtn1Click(Sender: TObject);
var FDlgOpen: TOpenDialog;
begin
FDlgOpen := TOpenDialog.Create(nil);
FDlgOpen.Title := "Open";
if FDlgOpen.Execute then BitBtn1.Caption := FDlgOpen.FileName;
FDlgOpen.Free;
end;
User Objects растет на 3,
GDI Objects растет на 9!!!
И вопрос. Что делать ? Где я не прав? :)
← →
DrPass © (2007-04-14 15:30) [1]
> User Objects растет на 3,
> GDI Objects растет на 9
Может, и есть утечка. Или в TOpenDialog, или в TBitBtn - можно посмотреть. Впрочем, чтобы эта утечка была как-то заметна для ОС, тебе потребуется тысяч двадцать раз по кнопке клацнуть...
← →
gosha73 (2007-04-14 15:34) [2]Ну это все равно не нормально и не может быть чтобы никто на это не обратил внимание. Утечки не происходит если не вызывать FDlgOpen.Execute.
10 раз кликнуть и это уже 90 GDI объектов где-то просто так висят за моим процессом и это не есть хорошо.
← →
Чародей © (2007-04-14 16:32) [3]Сколько добавляется GDI объектов столько и убавляется. так что либо твой софт либо ОС притормаживает с очисткой ресурсов
← →
gosha73 (2007-04-14 17:19) [4]Хм. Провел эксперимент на виртуальных машинах с этой же прогой.
1. Win2k русская версия - очищает сразу как надо.
2. WinXP SP2 MUI русская - очищает сразу как надо.
А на моей тачке WinXP SP2 Eng не очищает уже как в течении 15 минут.
Что же может мешать проге очистить ресурсы??? Бред какой-то.
У кого-нибудь есть идеи в чем может быть разница?
У меня никаких твикеров и ничего подобного на системе не стоит, классический вид и всё как обычно...
← →
gosha73 (2007-04-14 17:21) [5]Забыл указать, что у меня лицензионная винда и обновляю сразу как выпускают обновление.
← →
Desdechado © (2007-04-14 20:32) [6]try-finally поставь, а?
← →
DrPass © (2007-04-14 21:16) [7]
> try-finally поставь, а?
А зачем? Исключение-то он бы сразу заметил.
> Что же может мешать проге очистить ресурсы???
Думаю, TOpenDialog представляет оболочку для стандартного виндового диалога из comdlg32.dll. А значит, и вопросы по очистке ресурсов - к соответствующей библиотеке
← →
_Аноним (2007-04-14 23:27) [8]
> А зачем? Исключение-то он бы сразу заметил
На случай ,если оно возникнет
> gosha73
А ты не проверяй тему утечек ресурсов с помощью диспетчера задач, для этой цели существуют другие, правильные, способы
← →
Юрий Зотов © (2007-04-15 01:12) [9]> gosha73 (14.04.07 15:17)
with TOpenDialog.Create(nil) do
try
Title := "Open";
if Execute then
BitBtn1.Caption := FileName;
finally
Free
end;
И не будет утечек, гарантированно. А на показания неверных приборов - забейте.
← →
gosha73 (2007-04-15 14:27) [10]Оно уже понятно, что дело не в самой проге, а в системе и нее какое-то странноватое поведение, может зависит от мощнойстей железа или появление бага в обновленной дллке системы, иначе просто незнаю в чем причина.
А подскажите пожалуйста названия верных приборов.
Заранее благодарен.
← →
Leonid Troyanovsky © (2007-04-15 18:37) [11]
> gosha73 (15.04.07 14:27) [10]
> А подскажите пожалуйста названия верных приборов.
Perfmon.exe
--
Regards, LVT.
← →
Yanis © (2007-04-16 07:38) [12]
> И не будет утечек, гарантированно.
Почему гарантированно? Из-за try...finally?
Интересно :)
← →
Amoeba © (2007-04-16 11:32) [13]> gosha73 (15.04.07 14:27) [10]
> А подскажите пожалуйста названия верных приборов.
MemProof, например.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2007.06.10;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.043 c