powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / thread & memory
57 сообщений из 57, показаны все 3 страниц
thread & memory
    #33563254
vitvsh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
столкнулся с непонятной проблемой - в цикле по наступлению некого события создаю выделяю память malloc и создаю нить, в которую и передаю указатель, а там уже она освобождается. так в task manager'е объем занимаемой памяти растет постоянно. более того, даже если в цикле последовательно много раз выполняется malloc/free наблюдается такая же картина (каждый раз выделялся один объем - для эксперимента). в чем проблема?
...
Рейтинг: 0 / 0
thread & memory
    #33563256
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Память надо выделять внутри нити, а не снаружи.
...
Рейтинг: 0 / 0
thread & memory
    #33563259
vitvsh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
почему внутри? какая разница где ее выделили?
...
Рейтинг: 0 / 0
thread & memory
    #33563263
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
потому что память принадлежит той нити в которой ее выделили.
...
Рейтинг: 0 / 0
thread & memory
    #33563266
vitvsh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White OwlПамять надо выделять внутри нити, а не снаружи.я передаю указатель на нее, этого достаточно. потом как объяснить более того, даже если в цикле последовательно много раз выполняется malloc/free наблюдается такая же картина (каждый раз выделялся один объем - для эксперимента).
тут нитями и не пахло.
...
Рейтинг: 0 / 0
thread & memory
    #33563268
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А так Виндовс устроена. Если память запрошена и даже правильно освобождена, ОС резервирует его за процессом, на случай если опять запросит. Освобождается она фактически, когда процесс закрывается или, если это ГУИ - минимизировать главное окно программы. Память нужно выделять большим куском и не дергаться потом.
...
Рейтинг: 0 / 0
thread & memory
    #33563270
vitvsh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Relic HunterА так Виндовс устроена. Если память запрошена и даже правильно освобождена, ОС резервирует его за процессом, на случай если опять запросит. Освобождается она фактически, когда процесс закрывается или, если это ГУИ - минимизировать главное окно программы. Память нужно выделять большим куском и не дергаться потом.не могу так :(. а принудительно ее освободить можно (_heapmin не помогает)?
...
Рейтинг: 0 / 0
thread & memory
    #33563271
vitvsh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Relic Hunterна случай если опять запросит дык я повторно столько же запрашиваю - почему еще выделяет, а не ту же использует?
...
Рейтинг: 0 / 0
thread & memory
    #33563276
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй heapalloc, heapfree иеже с ними. malloc - не обеспечивает оптимального управления памятью и считается устаревшей. Но, думаю, даже так от фрагментации памяти никуда не денешся, память будет уходить. Так-что большой кусок и не освобождать его до конца.

Всего
...
Рейтинг: 0 / 0
thread & memory
    #33563280
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitvsh Relic Hunterна случай если опять запросит дык я повторно столько же запрашиваю - почему еще выделяет, а не ту же использует?Патамушта ты ее не просишь, а просишь новую. Раз выделивши память, запомнил адрес и все последующие вызовы делай через realloc , по запомненному адресу. Память должна переиспользоваться.
...
Рейтинг: 0 / 0
thread & memory
    #33563530
vitvsh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а как тогда быть с этимв цикле по наступлению некого события выделяю память malloc и создаю нить, в которую и передаю указатель, а там уже она освобождаетсяглавную нить нельзя задерживать до тех пор пока обрабатывается в новой (да и смысла ее создания тогда нет) :(
...
Рейтинг: 0 / 0
thread & memory
    #33564182
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда я-бы сделал пул адресов дин. выделяемой памяти, ну, скажем, 10-20 и раздавал бы их через критические секции. Тоесть передаеш треду адрес пула, ну а тред в CS берет-пользует-снимает блокировку с адреса в пуле. Иначе твою програму будет пучить по памяти.
...
Рейтинг: 0 / 0
thread & memory
    #33564411
vitvsh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
это только в винде так или в юниксах тоже такое?
...
Рейтинг: 0 / 0
thread & memory
    #33564701
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitvshэто только в винде так или в юниксах тоже такое?
Это только в форточках
Если мне не изменяет память, то есть какая-то ф-ция в вин, типа freeall - вот она-то и работает как нормальная free

Насчет, что malloc устаревшая - сами придумали?
Это обычная функция, которая кстати описана в POSIX
Обычно в C используют malloc/free , а в C++ - new/delete
...
Рейтинг: 0 / 0
thread & memory
    #33565548
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owlпотому что память принадлежит той нити в которой ее выделили.

Это ты сгарича. Память принадлежит процессу. Однако действительно внутри CRTL может быть такая реализация, что пулы памяти выделяются для каждого tread отдельно, в своем пуле. Выход - не использовать C/C++ выделение памяти, а пользоваться системными API для этого.
...
Рейтинг: 0 / 0
thread & memory
    #33566876
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv

Ну ты блин насоветуешь... откуда такая информация? Куча одна для всего процесса, если нужно организовать локальные для процесса объекты используется TLS (thread local storage)
...
Рейтинг: 0 / 0
thread & memory
    #33568474
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
funikovyuri MasterZiv

Ну ты блин насоветуешь... откуда такая информация? Куча одна для всего процесса, если нужно организовать локальные для процесса объекты используется TLS (thread local storage)

Это не я советую. Про TLS тут речи вроде бы не шло, поскольку товарисчу нужно наоборот, именно разделяемую память иметь в двух тредах.

А вообще тут много было грязных инсинуаций на тему выделения памяти.
...
Рейтинг: 0 / 0
thread & memory
    #33572933
vitvsh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
делаю
Код: plaintext
memcpy(&conf[ 0 ].orig,orig,sizeof(OrigList));
где под conf память выделялась malloc в головном треде, а orig локальная переменная - сразу скачок в таск манагере на 4Кб. причем такое же бывает и на strcmp, strncmp, memcmp, почему???
...
Рейтинг: 0 / 0
thread & memory
    #33573363
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сразу скачок в таск манагере на 4Кб

это нормально - ведь память выделяется в страницах
...
Рейтинг: 0 / 0
thread & memory
    #33573409
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
блин неправильно прочитал вопрос, сорри :(
...
Рейтинг: 0 / 0
thread & memory
    #33573838
_Балтика
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vitvshстолкнулся с непонятной проблемой - в цикле по наступлению некого события создаю выделяю память malloc и создаю нить, в которую и передаю указатель, а там уже она освобождается. так в task manager'е объем занимаемой памяти растет постоянно. более того, даже если в цикле последовательно много раз выполняется malloc/free наблюдается такая же картина (каждый раз выделялся один объем - для эксперимента). в чем проблема?Посмотри, может это как-то поможет...
...
Рейтинг: 0 / 0
thread & memory
    #33573878
vitvsh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
запускаю RamCleaner - сразу освобождает добрую часть памяти (треть), сжираемую процессом
...
Рейтинг: 0 / 0
thread & memory
    #33573883
_Балтика
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
memcpy, strcmp, strncmp, memcmp..... Я думаю, что это стек. Под него, как-известно 1 метр резервируется, по умолчанию. И, далее, по мере необходимости по странице винда выделяет при вызове ф-ций, назад смысла нет возвращать. Так что здесь все в норме.
...
Рейтинг: 0 / 0
thread & memory
    #33573892
vitvsh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а освобождать как ее?
...
Рейтинг: 0 / 0
thread & memory
    #33573893
_Балтика
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vitvshзапускаю RamCleaner - сразу освобождает добрую часть памяти (треть), сжираемую процессомВозможно стековая и возвращается на родину.
...
Рейтинг: 0 / 0
thread & memory
    #33573906
vitvsh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Балтика vitvshзапускаю RamCleaner - сразу освобождает добрую часть памяти (треть), сжираемую процессомВозможно стековая и возвращается на родину.а можно ее как-то другим способом?
...
Рейтинг: 0 / 0
thread & memory
    #33573907
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitvshа освобождать как ее?а зачем ?
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
thread & memory
    #33573923
_Балтика
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vitvshа освобождать как ее?А смысл какокой? Лишний геморой, и нагрузка на ось. Они же никуда не пропадают.
...
Рейтинг: 0 / 0
thread & memory
    #33573930
vitvsh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Карабас Барабас vitvshа освобождать как ее?а зачем ?
Posted via ActualForum NNTP Server 1.3ну как бы прога(сервис) за сутки "сжирает" таким образом до 50Мб - как долго проживет машина до падения?
...
Рейтинг: 0 / 0
thread & memory
    #33573955
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitvshну как бы прога(сервис) за сутки "сжирает" таким образом до 50Мбесли ты просишь память у ОС, а потом отдаешь ее, то такого не должно быть. Смотри, где-то есть утечки значит
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
thread & memory
    #33573962
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может ДЛЛ-ми какими-то сторонними пользуешься ? Там может быть свой менеджер памяти.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
thread & memory
    #33573968
vitvsh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в том то и дело что не прошу - всю память выделяю в самом начале.
...
Рейтинг: 0 / 0
thread & memory
    #33573975
_Балтика
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vitvshну как бы прога(сервис) за сутки "сжирает" таким образом до 50Мб - как долго проживет машина до падения?50М - это явно не стек одного потока :) Извини, конечно, ты хэндлы своих потоков аккуратно закрываешь?
...
Рейтинг: 0 / 0
thread & memory
    #33573981
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выделяешь в начале, а потом в процессе работы уже не просишь новую ? Тогда увеличению показываемого таксменеджером значения есть предел.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
thread & memory
    #33573996
vitvsh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор50М - это явно не стек одного потока :) Извини, конечно, ты хэндлы своих потоков аккуратно закрываешь?да. тот же таск манагер показывает кол-во дескрипторов - оно стабильно.
авторВыделяешь в начале, а потом в процессе работы уже не просишь новую ? Тогда увеличению показываемого таксменеджером значения есть предел.и чему он равен? и почему должно увеличиватся?
...
Рейтинг: 0 / 0
thread & memory
    #33574015
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitvshи чему он равен? и почему должно увеличиватся?логично предположить, что предел равен той величине, которую ты единожды изначально попросил у ОС.
увеличивается, потому что ты тратишь запрошенную память. Вот как всю использовать начнешь, так и прекратится увеличение
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
thread & memory
    #33574031
vitvsh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
то есть если я сразу запрашиваю через malloc 5 Мб я ее не получаю??? а получаю по мере ее обращения?
...
Рейтинг: 0 / 0
thread & memory
    #33574040
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitvshто есть если я сразу запрашиваю через malloc 5 Мб я ее не получаю??? а получаю по мере ее обращения?если я правильно понимаю :)
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
thread & memory
    #33574072
_Балтика
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vitvshи чему он равен? и почему должно увеличиватся?У величивается, потому что память вначеле только резервируется и затем лишь, по мере необходимости, реально выделяется.
...
Рейтинг: 0 / 0
thread & memory
    #33574081
vitvsh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторесли я правильно понимаю :)если честно, то как-то мало верится в такое :(
Код: plaintext
malloc returns a void pointer to the allocated space, or NULL if there is insufficient memory available.
...
Рейтинг: 0 / 0
thread & memory
    #33574094
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я правильно понимаю, опять же, то винда, когда у нее просят память, выделяет ее в свопе, а когда ты обращаешьсяк выделенной памяти, то она нужные страницы отображает в физическую память, т.о. минимизируется использование физической памяти.
Кстати, в винде есть понятие модели памяти, может с этим параметром поиграться ? Правда эти игрища в свое время привели к тому, что у меня на одной из машин перестал запускаться драйвер видеокарты :)
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
thread & memory
    #33574097
_Балтика
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пользуйся VirtualAllococ'м. Тогда точно будешь знать. Что ты зарезеровировал, что выделил и что вернул.
...
Рейтинг: 0 / 0
thread & memory
    #33574102
_Балтика
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_БалтикаПользуйся VirtualAllococ'м. Тогда точно будешь знать. Что ты зарезеровировал, что выделил и что вернул.VirtualAlloc'ом, плиз :)
...
Рейтинг: 0 / 0
thread & memory
    #33574105
vitvsh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Карабас БарабасЕсли я правильно понимаю, опять же, то винда, когда у нее просят память, выделяет ее в свопе, а когда ты обращаешьсяк выделенной памяти, то она нужные страницы отображает в физическую память, т.о. минимизируется использование физической памяти.но при этом ведь саммарная память занимаемая процессов не изменяетсяЮ так ведь?
...
Рейтинг: 0 / 0
thread & memory
    #33574113
vitvsh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
но при этом ведь суммарная память занимаемая процессов не изменяется, так ведь?
...
Рейтинг: 0 / 0
thread & memory
    #33574116
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitvshно при этом ведь саммарная память занимаемая процессов не изменяетсяЮ так ведь?то,что таскменеджер показывает ? а Х его З, чего он там показывает
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
thread & memory
    #33574125
vitvsh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторПользуйся VirtualAllococ'м. Тогда точно будешь знать. Что ты зарезеровировал, что выделил и что вернул.хотелось бы С-ми функциями с памятью работать
...
Рейтинг: 0 / 0
thread & memory
    #33574150
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitvshхотелось бы С-ми функциями с памятью работатьну дак и пользуйся. Насколько я понимаю (опять же ) в твоей проге есть компиляторовский менеджер памяти, он изначально просит у ОС гораздо больше памяти, чем надо. А тебе отдает уже из этого выпрошенного куска.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
thread & memory
    #33574163
_Балтика
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vitvsh авторПользуйся VirtualAllococ'м. Тогда точно будешь знать. Что ты зарезеровировал, что выделил и что вернул.хотелось бы С-ми функциями с памятью работатьВ сплюснутой библиотеке malloc предназначен, если я не ошибаюсь в основном для выделения малых кусков памяти (до 256К, если опять-же не ошибаюсь:)). У них и менеджер для этих малых кусков написан специально. А для больших лучше все-же апи юзать.
...
Рейтинг: 0 / 0
thread & memory
    #33574189
vitvsh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
то есть паниковать не стоит? типа съест сколько сможет и успокоится?
...
Рейтинг: 0 / 0
thread & memory
    #33574193
_Балтика
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Балтикадо 256К, если опять-же не ошибаюсь:))Байт, конечно :)
...
Рейтинг: 0 / 0
thread & memory
    #33574218
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitvshто есть паниковать не стоит? типа съест сколько сможет и успокоится?дак ты понаблюдай, в течение долгого времени, там и решишь, есть утечки или нет
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
thread & memory
    #33574266
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Балтика vitvsh авторПользуйся VirtualAllococ'м. Тогда точно будешь знать. Что ты зарезеровировал, что выделил и что вернул.хотелось бы С-ми функциями с памятью работатьВ сплюснутой библиотеке malloc предназначен, если я не ошибаюсь в основном для выделения малых кусков памяти (до 256К, если опять-же не ошибаюсь:)). У них и менеджер для этих малых кусков написан специально. А для больших лучше все-же апи юзать.

Откуда сведения о менеджере "малых кусков памяти"
...
Рейтинг: 0 / 0
thread & memory
    #33574499
_Балтика
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gluk (Kazan)
Откуда сведения о менеджере "малых кусков памяти"Бес попутал насчет малых кусков :). Но вобщем-то кучу (из коей маллок память выделяет) нужно юзать, ихмо, лишь для небольших кусков. А уж если потоков с использованием малока много то надоть кучу куч делать :) А нето малок воще заткнуться может.
...
Рейтинг: 0 / 0
thread & memory
    #33574742
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Балтика Gluk (Kazan)
Откуда сведения о менеджере "малых кусков памяти"Бес попутал насчет малых кусков :). Но вобщем-то кучу (из коей маллок память выделяет) нужно юзать, ихмо, лишь для небольших кусков. А уж если потоков с использованием малока много то надоть кучу куч делать :) А нето малок воще заткнуться может.

Просто как раз с этим (в частности) усиленно трахаемся :)
Зачепило за живое
...
Рейтинг: 0 / 0
thread & memory
    #33577097
vitvsh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
подключил XWatcher , смотрю. commited память растет постепенно - сначала reserved увеличивается на 256 страниц, потом commited поглощает их, потом опять... сложно как-то понять чего
...
Рейтинг: 0 / 0
thread & memory
    #33583415
Gomes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vitvshподключил XWatcher , смотрю. commited память растет постепенно - сначала reserved увеличивается на 256 страниц, потом commited поглощает их, потом опять... сложно как-то понять чего
X-Watcher создавался для несколько других целей. Найти им источник утечки можно, наверно, только путем анализа данных, которые пишутся в выделяемую память. Т.е. кликаем по квадратику и глядим что за данные там находятся. По сути проблемы - надо смотреть код.
...
Рейтинг: 0 / 0
57 сообщений из 57, показаны все 3 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / thread & memory
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]