Заметил интересную вещь на своей проге -- при работе она постоянно съедает часть ресурсов памяти, начал искать и обнаружил, что компонент Stack при считывании из него параметров не очищает этот параметр, а оставляет в памяти. При достижении полного считывания память показывает, что Stack полон, нажимаеши очистить -- Stack очищается и освобождает память. Вот небольшой пример.
code_7446.txt
Как производилась проверка. Компилируем и запускаем прогу (лучше не из среды), запускаем диспетчер задач, ищем прогу в процессах и запоминаем количество памяти, нажимаем Add, ждем достижения конца прогресса. Память начинает расти и растет до конца прогресса, а ведь схема построена так, что стэк регулярно считывается, а значит, после достижения конца заполнения память должна освобождаться, но это не происходит до тех пор, пока не нажмешь Clear. В чем тут проблема?
Этот топик читают: Гость
Разработчик
Ответов: 26151
Рейтинг: 2127
|
|||
карма: 22 |
| ||
файлы: 1 | code_7446.txt [3.1KB] [342] |
Ответов: 9906
Рейтинг: 351
|
|||
nesco писал(а): обнаружил, что компонент Stack при считывании из него параметров не очищает этот параметрПальцем покажи |
|||
карма: 9 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
все он очищает. Советую посмотреть StrList на предмет реаллокирования выделенной памяти после удаления элемента из него. Есть там вроде как и у борланда понятия "Выделенная память" и "Используемая память", связанные с увеличением быстродействия списков.
|
|||
карма: 27 |
|
Ответов: 8926
Рейтинг: 823
|
|||
Galkov, не удалось показать пальцем: за ~10 мин ("выпил чашечку кофе", перекурил) при загрузке процессора 50% никакого увеличения памяти не призошло code_7448.txt
|
|||
карма: 19 |
| ||
файлы: 1 | code_7448.txt [1.1KB] [320] |
Разработчик
Ответов: 26151
Рейтинг: 2127
|
|||
Galkov писал(а): Пальцем покажи------------ Дoбавленo: Леонид, а ты мою запусти и посмотри. |
|||
карма: 22 |
|
Ответов: 9906
Рейтинг: 351
|
|||
nesco писал(а): А схему тогда я зачем привел, чтобы показать?Приведенная схема НИКАКОГО отношения к утверждению nesco писал(а): обнаружил, что компонент Stack при считывании из него параметров не очищает этот параметрне имеет. К такому утверждению имеет отношение более простая схема из 6 элементов Убедительная просьба, просто отвечать за свои слова Сказал "обнаружил, что компонент Stack " - показывай |
|||
карма: 9 |
|
Разработчик
Ответов: 26151
Рейтинг: 2127
|
|||
Galkov писал(а): Сказал "обнаружил, что компонент Stack " - показывайНо в той схеме, достаточно отсоединить Stack от мультика и разрастания памяти не происходит. Как еще я тогда должен считать -- Stack виноват или не Stack? Может и не Stack виноват, но ведь в конце же я спросил nesco писал(а): В чем тут проблема?Есть схема, можно на ней показать -- как избавиться от излишнего потребления памяти. |
|||
карма: 22 |
|
Ответов: 9906
Рейтинг: 351
|
|||
nesco писал(а): Но в той схеме, достаточно отсоединить Stack от мультика и разрастания памяти не происходитИз этого НЕ следует НИЧЕГО. А вот из твоего утверждения в виновности Stack СЛЕДУЕТ совершенно категорично, что такая схема будет жрать память неограничено: code_7449.txt И ЕСЛИ это не соответствует действительности, ТОГДА не верна исходная посылка |
|||
карма: 9 |
| ||
файлы: 1 | code_7449.txt [771B] [286] |
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
готов схемой из 4х элементов опровергнуть г-на nesco,
code_7450.txt после первого нажатия диспетчер остановился на 1908Кб и более не увеличивал эту цифру. ------------ Дoбавленo: опередили |
|||
карма: 27 |
| ||
файлы: 1 | code_7450.txt [374B] [306] |
Ответов: 9906
Рейтинг: 351
|
|||
Кстати говоря, ответственность за слова и предполагает самостоятельное проведение элементарных тестов ДО выкладывания утверждения.
|
|||
карма: 9 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
бесспорно
|
|||
карма: 27 |
|
Разработчик
Ответов: 26151
Рейтинг: 2127
|
|||
Проверил ваши примеры, но не понял -- почему в примере от Dilmы сожрало память, и не освободила ее при считывании? Вот пример от Dilmы с добавлением Clear, при нажатии на него происходит не полное, но освобождение памяти. Как это понимать?
code_7451.txt Если понажимать по-очередно на клавиши Add/Clear, то можно проследить что память будет менятся в определенных пределах. |
|||
карма: 22 |
| ||
файлы: 1 | code_7451.txt [560B] [378] |
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
nesco писал(а): почему в примере от Dilmы сожрало память, и не освободила ее при считывании?вывод напрашивается сам собой: проблема в ОС, программах или отличие от дистрибутива(т.е. соответствие SVN) |
|||
карма: 27 |
|
Разработчик
Ответов: 26151
Рейтинг: 2127
|
|||
Dilma писал(а): проблема в ОС, программах или отличие от дистрибутива(т.е. соответствие SVN)В этих компонентах никакого отличия от SVN -- нет, а вот в ОС... очень может быть. В принципе, почему съело память я кажется понял -- при добавлении в стэк была отпущена память на все данные которые в него вошли, а так как в следующем цикле Add мы не увеличиваем колическство данных, вот память и не растет, а освободить память можно только по Clear. Если не правильно понял, то поправьте. |
|||
карма: 22 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
nesco, так растет память или не растет
|
|||
карма: 27 |
|