Название: [РЕШЕНО] Сколько оперативной памяти потребляет приложение Отправлено: iBaaX от Ноябрь 03, 2014, 19:06 Народ, подскажите как можно отслеживать количество используемой моим приложением оперативной памяти внутри самого приложения??
Суть в том что в приложении висит QWebview в котором загружена страница с flash содержимым и идет постоянный жер в памяти этой флешкой. Надо по достижении определенного порога использованной памяти обновлять страницу. Нужно именно кросс платформенное решение. Название: Re: Сколько оперативной памяти потребляет приложение Отправлено: Hrundel от Ноябрь 04, 2014, 20:51 Смотря как выделять память. Из кучи наверно сложно посчитать. Наверное есть какая-то софтина. Искать надо.
Название: Re: Сколько оперативной памяти потребляет приложение Отправлено: iBaaX от Ноябрь 04, 2014, 22:48 В том то и дело что стороняя софтина не нужна. Нужно чтобы приложение само подсчитывало сколько оперативки оно жрет в данный момент.
Неужели никто не сталкивался с такой задачей? Название: Re: Сколько оперативной памяти потребляет приложение Отправлено: qate от Ноябрь 05, 2014, 12:22 обычно жор памяти смотрят средствами системы, смотреть же самим приложением - это редкость
для linux есть pmap - можно посмотреть как она считает память для венды не знаю ) на основании этих данных можно написать свой класс подсчета пожираемой памяти Название: Re: Сколько оперативной памяти потребляет приложение Отправлено: vulko от Ноябрь 05, 2014, 13:04 может эту память жрет флеш плагин и нужно флеш кодерам руки пообрывать?))
Название: Re: Сколько оперативной памяти потребляет приложение Отправлено: xokc от Ноябрь 05, 2014, 15:18 Какая ОС и компилятор?
Название: Re: Сколько оперативной памяти потребляет приложение Отправлено: vizir.vs от Ноябрь 05, 2014, 15:58 Какая ОС и компилятор? Нужно именно кросс платформенное решение. Название: Re: Сколько оперативной памяти потребляет приложение Отправлено: Igors от Ноябрь 05, 2014, 16:39 Неужели никто не сталкивался с такой задачей? Да сталкивались-то многие, вот только удобного кросс-платформенного решения не видно. Или лезть в нативняк или перекрывать глобально new/delete (тоже не мед)Название: Re: Сколько оперативной памяти потребляет приложение Отправлено: xokc от Ноябрь 05, 2014, 17:09 Нужно именно кросс платформенное решение. И Вы его предполагаете найти именно средствами Qt? Боюсь, что с таким "не сталкивался никто".Название: Re: Сколько оперативной памяти потребляет приложение Отправлено: Hrundel от Ноябрь 05, 2014, 19:08 Нужно именно кросс платформенное решение. Кроссплатформенно, пожалуй не возможно из Qt. Наверное, нужно чистым С. И очень хорошо знать оси. Название: Re: Сколько оперативной памяти потребляет приложение Отправлено: iBaaX от Ноябрь 05, 2014, 23:42 Печалька.
Ну а как можно последить за потреблением памяти например flash плагином или допустим объектом QWebView,QNetworkAccessManager (естественно кросплатформенно и желательно средствами QT)? Название: Re: Сколько оперативной памяти потребляет приложение Отправлено: qate от Ноябрь 06, 2014, 08:51 нужно поставить последнею версию Qt, если поведение повторяется - искать имеющийся багрепорт или писать новый
кто выделил память в куче - думаю узнать "кто" это сделал наверно невозможно теоретически можно попробовать вручную по памяти полазить, сравнить указатели - но эта идея очень сырая если страницу с флешем предполагается обновлять - то можно сделать обновление по таймеру, хотя это и неправильно Название: Re: Сколько оперативной памяти потребляет приложение Отправлено: iBaaX от Ноябрь 07, 2014, 02:46 По таймеру обновлять глупо и не правильно.
Надо именно по достижению определенного предела памяти. Утечка идет определенно через flash и так как он не мой то решить проблему можно только обновлением страницы, но не тупо по таймеру а по пределу использованной памяти. Обидно что никто таки и не пытался решить это кроссплатформенно. Но я все равно жду, может кто еще чего скажет? Название: Re: Сколько оперативной памяти потребляет приложение Отправлено: Igors от Ноябрь 07, 2014, 11:20 Обидно что никто таки и не пытался решить это кроссплатформенно. Был предложен вариант с перекрытием new/delete. Чего же Вы не "попытались решить"?. Наверное потому что надо копаться, велосипедить и хз удастся ли. А вот так, в позиции "обиженного", куда проще :) Но я все равно жду, может кто еще чего скажет? По таймеру обновлять глупо и не правильно. Не уверен что "цель оправдывает средства". Может все проще - раз жрет значит надо, напр кеширует. Лучше поизучать flash, сейчас Вы хотите решить не свою проблему. Надо именно по достижению определенного предела памяти. Утечка идет определенно через flash и так как он не мой то решить проблему можно только обновлением страницы, но не тупо по таймеру а по пределу использованной памяти. Название: Re: Сколько оперативной памяти потребляет приложение Отправлено: vulko от Ноябрь 07, 2014, 11:34 Обидно что никто таки и не пытался решить это кроссплатформенно. Был предложен вариант с перекрытием new/delete. Чего же Вы не "попытались решить"?. Наверное потому что надо копаться, велосипедить и хз удастся ли. А вот так, в позиции "обиженного", куда проще :) Но я все равно жду, может кто еще чего скажет? Не позорься, при чем тут new/delete, если память жрет флэш. New/delete это не низкоуровневое выделение памяти. Может флеш через malloc память жрет... Цитировать По таймеру обновлять глупо и не правильно. Надо именно по достижению определенного предела памяти. Утечка идет определенно через flash и так как он не мой то решить проблему можно только обновлением страницы, но не тупо по таймеру а по пределу использованной памяти. Обидно что никто таки и не пытался решить это кроссплатформенно. Но я все равно жду, может кто еще чего скажет? А что тут сказать? Кривой флеш, кривой браузер... Форс мажор это. Нужно либо избавляться от такого флеша, либо колхозить. Обновление можно сделать, не обязательно смотреть сколько памяти съело приложение, можно попробовать подойти с другой стороны. Например с некой периодичностью смотреть сколько есть свободной памяти, и если её меньше определенного объема, обновлять страницу. Либо копайте проверку памяти используемой процессом: https://www.google.ru/webhp?sourceid=chrome-instant&ion=1&espv=2&es_th=1&ie=UTF-8#newwindow=1&qscrl=1&q=c%2B%2B+check+memory+used+by+process Кроссплатформенного решения на плюсах скорее всего нет. Возможно есть на жабе, т.к. жаба код запускается в JVM. Название: Re: Сколько оперативной памяти потребляет приложение Отправлено: Old от Ноябрь 07, 2014, 11:36 Был предложен вариант с перекрытием new/delete. Чего же Вы не "попытались решить"? Это ничего не даст. flash не будет использовать перекрытые функции.Не уверен что "цель оправдывает средства". Может все проще - раз жрет значит надо, напр кеширует. Не, он просто течет. И исправлять ЭТО авторы не будут, т.к. перестали поддерживать ЭТО под линукс.Остается или отказаться от флеша, или как-то решать его проблемы. Название: Re: Сколько оперативной памяти потребляет приложение Отправлено: Igors от Ноябрь 07, 2014, 13:25 Это ничего не даст. flash не будет использовать перекрытые функции. Если это dll то не будет, придется через хуки. А если прилинковано статычно - очень даже будетНазвание: Re: Сколько оперативной памяти потребляет приложение Отправлено: Old от Ноябрь 07, 2014, 13:29 А если прилинковано статычно - очень даже будет flash прилинкованный статично? Вы о чем? :)Название: Re: Сколько оперативной памяти потребляет приложение Отправлено: xokc от Ноябрь 07, 2014, 19:41 Кроссплатформенного решения на плюсах скорее всего нет. Почему же нет? Вот навскидку:http://nadeausoftware.com/articles/2012/07/c_c_tip_how_get_process_resident_set_size_physical_memory_use http://stackoverflow.com/questions/63166/how-to-determine-cpu-and-memory-consumption-from-inside-a-process Другое дело, что это не Qt. Название: Re: Сколько оперативной памяти потребляет приложение Отправлено: iBaaX от Ноябрь 09, 2014, 21:57 http://nadeausoftware.com/articles/2012/07/c_c_tip_how_get_process_resident_set_size_physical_memory_use Спасибо, сделал на основе данной статьи. Под Win7 x64 Qt 5.3 работает. Под Linux проверю чуть позже. Единственное если будете сравнивать с диспетчером задач показания, не забудьте что процедура показывает Рабочий набор (Working Set), а в диспетчере задач по-умолчанию стоит показывать Частный рабочий набор (Private Working Set). Название: Re: Сколько оперативной памяти потребляет приложение Отправлено: vulko от Ноябрь 10, 2014, 08:33 Кроссплатформенного решения на плюсах скорее всего нет. Почему же нет? Вот навскидку:http://nadeausoftware.com/articles/2012/07/c_c_tip_how_get_process_resident_set_size_physical_memory_use http://stackoverflow.com/questions/63166/how-to-determine-cpu-and-memory-consumption-from-inside-a-process Другое дело, что это не Qt. я не специалист по флешу, но что если он работает в отдельном процессе? это не совсем то получается. впрочем я автору как раз и советовал посмотреть на общий объем свободной памяти или другой косвенный признак. |