Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26151
Рейтинг: 2127
#1: 2007-10-24 02:20:32 ЛС | профиль | цитата
Заметил интересную вещь на своей проге -- при работе она постоянно съедает часть ресурсов памяти, начал искать и обнаружил, что компонент Stack при считывании из него параметров не очищает этот параметр, а оставляет в памяти. При достижении полного считывания память показывает, что Stack полон, нажимаеши очистить -- Stack очищается и освобождает память. Вот небольшой пример.
code_7446.txt
Как производилась проверка. Компилируем и запускаем прогу (лучше не из среды), запускаем диспетчер задач, ищем прогу в процессах и запоминаем количество памяти, нажимаем Add, ждем достижения конца прогресса. Память начинает расти и растет до конца прогресса, а ведь схема построена так, что стэк регулярно считывается, а значит, после достижения конца заполнения память должна освобождаться, но это не происходит до тех пор, пока не нажмешь Clear. В чем тут проблема?
карма: 22

0
файлы: 1code_7446.txt [3.1KB] [342]
Ответов: 9906
Рейтинг: 351
#2: 2007-10-24 07:36:26 ЛС | профиль | цитата
nesco писал(а):
обнаружил, что компонент Stack при считывании из него параметров не очищает этот параметр

Пальцем покажи
карма: 9

0
Администрация
Ответов: 15295
Рейтинг: 1519
#3: 2007-10-24 10:27:51 ЛС | профиль | цитата
все он очищает. Советую посмотреть StrList на предмет реаллокирования выделенной памяти после удаления элемента из него. Есть там вроде как и у борланда понятия "Выделенная память" и "Используемая память", связанные с увеличением быстродействия списков.
карма: 27
0
Ответов: 8926
Рейтинг: 823
#4: 2007-10-24 10:35:09 ЛС | профиль | цитата
Galkov, не удалось показать пальцем: за ~10 мин ("выпил чашечку кофе", перекурил) при загрузке процессора 50% никакого увеличения памяти не призошло code_7448.txt
карма: 19

0
файлы: 1code_7448.txt [1.1KB] [320]
Разработчик
Ответов: 26151
Рейтинг: 2127
#5: 2007-10-24 10:42:25 ЛС | профиль | цитата
Galkov писал(а):
Пальцем покажи
А схему тогда я зачем привел, чтобы показать? Хорошо, а почему работающая в таком режиме программа пожирает память и не освобождает ее. За две недели программа разрастается до 100 Мб. Достаточно отсоединить все Stack'и и разрастание памяти не происходит. Возможно, данные очищаются нормально, но в PList'e не происходит очистка памяти после стирания указателей. Что-то приводит, ведь, к разрастанию потребляемых ресурсов памяти.

------------ Дoбавленo:

Леонид, а ты мою запусти и посмотри.
карма: 22

0
Ответов: 9906
Рейтинг: 351
#6: 2007-10-24 10:49:52 ЛС | профиль | цитата
nesco писал(а):
А схему тогда я зачем привел, чтобы показать?

Приведенная схема НИКАКОГО отношения к утверждению
nesco писал(а):
обнаружил, что компонент Stack при считывании из него параметров не очищает этот параметр

не имеет.
К такому утверждению имеет отношение более простая схема из 6 элементов

Убедительная просьба, просто отвечать за свои слова
Сказал "обнаружил, что компонент Stack " - показывай
карма: 9

0
Разработчик
Ответов: 26151
Рейтинг: 2127
#7: 2007-10-24 10:55:15 ЛС | профиль | цитата
Galkov писал(а):
Сказал "обнаружил, что компонент Stack " - показывай

Но в той схеме, достаточно отсоединить Stack от мультика и разрастания памяти не происходит. Как еще я тогда должен считать -- Stack виноват или не Stack? Может и не Stack виноват, но ведь в конце же я спросил
nesco писал(а):
В чем тут проблема?

Есть схема, можно на ней показать -- как избавиться от излишнего потребления памяти.
карма: 22

0
Ответов: 9906
Рейтинг: 351
#8: 2007-10-24 11:30:22 ЛС | профиль | цитата
nesco писал(а):
Но в той схеме, достаточно отсоединить Stack от мультика и разрастания памяти не происходит

Из этого НЕ следует НИЧЕГО.

А вот из твоего утверждения в виновности Stack СЛЕДУЕТ совершенно категорично, что такая схема будет жрать память неограничено:
code_7449.txt
И ЕСЛИ это не соответствует действительности, ТОГДА не верна исходная посылка
карма: 9

0
файлы: 1code_7449.txt [771B] [286]
Администрация
Ответов: 15295
Рейтинг: 1519
#9: 2007-10-24 11:32:56 ЛС | профиль | цитата
готов схемой из 4х элементов опровергнуть г-на nesco,
code_7450.txt
после первого нажатия диспетчер остановился на 1908Кб и более не увеличивал эту цифру.
------------ Дoбавленo:

опередили
карма: 27
0
файлы: 1code_7450.txt [374B] [306]
Ответов: 9906
Рейтинг: 351
#10: 2007-10-24 11:34:37 ЛС | профиль | цитата
Кстати говоря, ответственность за слова и предполагает самостоятельное проведение элементарных тестов ДО выкладывания утверждения.

карма: 9

0
Администрация
Ответов: 15295
Рейтинг: 1519
#11: 2007-10-24 11:40:06 ЛС | профиль | цитата
бесспорно
карма: 27
0
Разработчик
Ответов: 26151
Рейтинг: 2127
#12: 2007-10-24 12:46:04 ЛС | профиль | цитата
Проверил ваши примеры, но не понял -- почему в примере от Dilmы сожрало память, и не освободила ее при считывании? Вот пример от Dilmы с добавлением Clear, при нажатии на него происходит не полное, но освобождение памяти. Как это понимать?
code_7451.txt
Если понажимать по-очередно на клавиши Add/Clear, то можно проследить что память будет менятся в определенных пределах.
карма: 22

0
файлы: 1code_7451.txt [560B] [378]
Администрация
Ответов: 15295
Рейтинг: 1519
#13: 2007-10-24 12:49:59 ЛС | профиль | цитата
nesco писал(а):
почему в примере от Dilmы сожрало память, и не освободила ее при считывании?

вывод напрашивается сам собой: проблема в ОС, программах или отличие от дистрибутива(т.е. соответствие SVN)
карма: 27
0
Разработчик
Ответов: 26151
Рейтинг: 2127
#14: 2007-10-24 12:59:16 ЛС | профиль | цитата
Dilma писал(а):
проблема в ОС, программах или отличие от дистрибутива(т.е. соответствие SVN)

В этих компонентах никакого отличия от SVN -- нет, а вот в ОС... очень может быть. В принципе, почему съело память я кажется понял -- при добавлении в стэк была отпущена память на все данные которые в него вошли, а так как в следующем цикле Add мы не увеличиваем колическство данных, вот память и не растет, а освободить память можно только по Clear. Если не правильно понял, то поправьте.
карма: 22

0
Администрация
Ответов: 15295
Рейтинг: 1519
#15: 2007-10-24 13:21:15 ЛС | профиль | цитата
nesco, так растет память или не растет
карма: 27
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)