![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
"Out Of System Resourses".
AlexanderMS © (2006-06-30 19:06:00)Ошибка во время выполнения моей программы. :( . Появляется при открытии окна "О программе", и то не всегда, но 2 раза уже заметил. Как с этим бороться?
Если посмотреть на её "аппетит" в Диспетчере задач, то он иногда приближается к отметке 10 МБ, а в основном - около 2500 КБ. Но это вроде бы цветочки, по сравнению с... Delphi!
Я думаю, не потому ли, что все тексты висят в памяти в виде переменных (всего около 1500-2000 символов, мне это необходимо (но не обязательно) для быстрого переключения программы с одного
языка на другой).
В окне Project -> Information следующие данные:
Data Size: 10625 bytes
Initial Stack Sze: 16384 bytes
Desdechado (2006-07-01 13:38:00) [1]Есть подозрения, что создаваемые через .Create объекты нигде не уничтожаются. Особенно серьезно это может быть по части форм и объектов GDI, менее серьезно - от всяких массивов и списков.
Почитай книжки по динамическому созданию и уничтожению объектов.
Погоняй MemProof на предмет утечек ресурсов.
koha (2006-06-30 20:08:00) [2]Вот про 4кб. - я согласен, тысячу инттежеров не нужно. достаточно одной переменной в ненужном месте и компилятор сам раздует вашу прогу ненужным кодом, если за одной переменной нужно через пару стеков в памяти лазить. Стоит попробывать пару Integer - ов потягать всеми процедурами которые есть и можно увидеть как она дуться будет, а затем убрать их - прога заметно похудеет.
И это уже проверено неоднократно, но это относится не только Integer, но и к другим переменным тоже.
Ega23 (2006-06-30 19:47:00) [3]
> Но это я про то пытался сказать как может прога 400 кб.
> занять процесс
> аж 3 - 4 мб.
>
А один фиг чушь сказал. Integer - 4 байта. 4Мб - 400Кб ~ 3,5Мб. Это примерно 700.000 переменных типа Integer.
koha (2006-06-30 19:44:00) [4]Сорррии не разобрал суть вопроса "Out of System Resources" ......
Но это я про то пытался сказать как может прога 400 кб. занять процесс
аж 3 - 4 мб.
Ega23 (2006-06-30 19:37:00) [5]
> Может быть у тебя много глобальных переменных типа integer
> - разнеси их по локальным процедурам.
Ты, прежде чем отвечать, сначала задумайся - сколько же должно быть глобальных переменных типа Integer, чтобы вывалилось Out of System Resources?
По сабжу: буквально сегодня такое было. Но это IDE чудил.
Кстати, как ты её запускаешь: из-под отладчика?
Ega23 (2006-06-30 19:37:00) [6]
> DrPass © (30.06.06 19:35) [4]
:)
DrPass (2006-06-30 19:35:00) [7]
> koha (30.06.06 19:27) [3]
Наверное, учитель информатики тебя молчаливо ненавидит, но ничего не может сделать
koha (2006-06-30 19:27:00) [8]Все процедуры и функции хранят в памяти свои переменные вблизи, а если ини используют много глобальных переменных то при каждом вызове процедуры она использует "далекие" переменные для себя, хранящиеся в другом стеке, соответственно процесс может наращивать мегабайты. Лучше переменные хранить "вблизи" своих процедур, чтоб они были в одном стеке.
koha (2006-06-30 19:16:00) [9]Может быть у тебя много глобальных переменных типа integer - разнеси их по локальным процедурам.
Джо (2006-06-30 19:06:00) [10]Посмотри на кол-во используемых ресурсов GDI.