Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.29;
Скачать: CL | DM;

Вниз

Куда пропадает память?   Найти похожие ветки 

 
Мыш ©   (2003-05-14 18:59) [0]

Заметил, что если запустить и закрыть мою прогу много раз, кол-во занятой памяти становится 100%. Не понимаю, из-за чего это может происходить, ведь все, что я создаю с помощью create я точно освобождаю, все формы автосоздаваемые, а динамических массивов нет. Единственное, что может есть память в этой проге - это стринглисты, битмапы и один мемори стрим. Но все это абсолютно точно освобождается. Может я не знаю еще о чем-то?


 
clickmaker ©   (2003-05-14 19:05) [1]

кол-во занятой памяти становится 100%

Это как?


 
Anatoly Podgoretsky ©   (2003-05-14 19:16) [2]

Сказки А.С. Пушкина


 
Serginio   (2003-05-14 19:20) [3]

При завершении процесса память жрать могут не закрытые системные ресурсы например файлы,битмапы. Поищи в этом напрвлении.


 
Мыш ©   (2003-05-14 19:20) [4]

Ну менеджер процессов показывает загрузку оперативки на 100%, а обычно на 25% где-то.

А Вы Анатолий под "сказками" имеете в виду что я все таки за чем то не уследил?


 
Anatoly Podgoretsky ©   (2003-05-14 19:24) [5]

Ну чудес не бывает, где то не освождаешь память или используешь глюкавые компоненты.


 
McSimm ©   (2003-05-14 19:36) [6]

Маленький секрет - подобная ситуация нереальна даже если в программе вообще не освобождать динамические объекты.
(признаюсь - не уверен относительно битмапов)


 
nevalex ©   (2003-05-14 20:47) [7]

Память на 100% ...а у тебя случайно виртуалка не отключена
...хотя все равно не может быть
Может ты используешь левые(или свои) компоненты которые,возможно не уничтожаются
Попробуй для них Free


 
Иван Шихалев ©   (2003-05-14 21:03) [8]

Количество всей занятой памяти? Т.е. занятой не только твоей программой? К какому процессу она привязана? К какому модулю (exe/dll)? Правда для ответа на последний вопрос надо смотреть более специализированной программой, чем process manager...

От динамических объектов зависеть не должно, это явно (см. MSDN). Не уверен относительно ресурсов и библиотек. А еще Windows производит кэширование программных модулей в памяти...

Могу посоветовать:
а) Посмотреть, чем память кушается (NU SysInfo, например)
б) Поэкспериментировать с другими программами.


 
Mystic ©   (2003-05-14 23:08) [9]

Посмотри, куда память уходит... Прежде всего AllocMemSize и AllocMemCount. Потом все то, что используешь ты (дескрипторы, ...). Если с этим все в порядке, значит ты выполнил все что мог :)


 
Мыш ©   (2003-05-14 23:49) [10]

Все что использую я (- это, поверьте, совсем немного, пара стримов и стринглистов, пара битмапов, и все!) я освобождаю. Благо количество этих мулек не напрягает насчет проверки. Компоненты - только стандартные и парочка из rxlib.
AllocMemSize и AllocMemCount вообще даже не знаю, что такое :(
Виртуалка - гиг на диске с, размер фиксирован и на min и на max

Единственное, что смущает - может быть виноваты формы, я о них вообще не забочусь, хотя вроде где-то читал, что даже автосоздаваемые надо уничтожать, а лучше не делать автосоздаваемые, может быть это?


 
Checist [root]   (2003-05-14 23:55) [11]

Возможно ты закрываешь лишь апликацию своего приложения, например убиваешь не дочернюю форму, а главная находится в состоянии hide. Тогда самой проги видно не будет, как запущенного приложения, но сам процесс останется и будет жрать память, как и раньше.


 
Verg ©   (2003-05-15 08:56) [12]

Догадка только одна: при закрывании программы, сам процесс не завершается, например, остается чегонибудь бесконечно ждать, или повисает на какаом-нибудь таймауте на самом выходе. Т.е. главная форма уже уничтожена и создается впечатление, что программа завершилась, но, если посмотреть в таск манагере в процессах, то она числится на исполнении.


 
Nucl ©   (2003-05-15 09:11) [13]

Запусти прогу на другой машине, посмотри результат там, может у тебя злобный вирус засел ;)


 
Думкин ©   (2003-05-17 08:31) [14]

А процессы точно закрываются? Может они все зависают?


 
Malder ©   (2003-05-17 10:53) [15]

А мне вот что интересно. Все говорят, посмотри - освободил ли ты память и т.д. Так если процесс завершается, все, что находится в его ВАП тоже "уничтожается". Пусть ты там хоть навыделял памяти (и заполнил ее) на 100 Mb. И не освобождаешь в конце. Так если процесс закроется, то винда сама все почистит...


 
Nerpa   (2003-05-17 10:55) [16]

Посмотри какие процессы висят в Диспетчере задач:
- до запуска проги
- в момент её работы
- после закрытия проги
Сразу увидешь "кто виноват".
Посмотри также загрузку процессора после завершения твоей проги.
Может какой другой процесс, которого ты активировал, хавает время, пытаясь что-то обрабатывать от тебя.


 
Шаман ©   (2003-05-17 10:56) [17]

Надо бы твою прогу на Win2k/XP запустить и посмотреть что она с памятью такого вытворяет.


 
hun   (2003-05-17 23:08) [18]

100% - это круто. А вообще, если запускать простейшую программу (любую) такого эффекта нет? С выделением памяти в виндах вообще все не так однозначно. А по сути проблемы вот такие мысли:

1. Есть такая штука CodeGuard называется. Поставляется, правда с С++ Builder, но насколько я помню можно его и на Дельфи натравить. Заточена специально для поиска утечек памяти.
2. Если я правильно помню, при выгрузке программы все выделенные ей ресурсы убиваются системой. Исключение могут составлть только объекты ядра (насколько я помню). Т.е. либо не уничтожаются потоки, либо что-то из объектов ядра создается и не уничтожается. Что винды считают такими объектами ядра я уже не помню(но грубо все у чего есть Handle или что помнит библитека kernel можно в нашем случае считать объектами ядра - больше не меньше).
3. Если без хитрых программ, то искать такую штуку можно старым добрым методом комментирования всего подозрительного. Либо постепенно закомментируете всю программу, либо когда-нибудь память перестанет пропадать. :))




Страницы: 1 вся ветка

Текущий архив: 2003.05.29;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.02 c
1-94899
Zew
2003-05-16 21:17
2003.05.29
Форма не рисовалась


14-95040
Soft
2003-05-07 16:21
2003.05.29
Какой Linux более стабилен, удобен, быстр...


14-95125
Ihor Osov'yak
2003-05-12 15:27
2003.05.29
Жызнь вотросам от Skier !!!!!!!!!!!!!!!!!!!!


3-94667
Петров Денис
2003-05-12 09:48
2003.05.29
Timeout expired


1-94956
SkyN
2003-05-17 11:14
2003.05.29
возможно ли записать tab в штрих-код?