Russian Qt Forum
Ноябрь 24, 2024, 04:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: [РЕШЕНО] Сколько оперативной памяти потребляет приложение  (Прочитано 11738 раз)
iBaaX
Гость
« : Ноябрь 03, 2014, 19:06 »

Народ, подскажите как можно отслеживать количество используемой моим приложением оперативной памяти внутри самого приложения??
Суть в том что в приложении висит QWebview в котором загружена страница с flash содержимым и идет постоянный жер в памяти этой флешкой. Надо по достижении определенного порога использованной памяти обновлять страницу.
Нужно именно кросс платформенное решение.
« Последнее редактирование: Ноябрь 09, 2014, 21:59 от iBaaX » Записан
Hrundel
Гость
« Ответ #1 : Ноябрь 04, 2014, 20:51 »

Смотря как выделять память. Из кучи наверно сложно посчитать. Наверное есть какая-то софтина. Искать надо.
Записан
iBaaX
Гость
« Ответ #2 : Ноябрь 04, 2014, 22:48 »

В том то и дело что стороняя софтина не нужна. Нужно чтобы приложение само подсчитывало сколько оперативки оно жрет в данный момент.

Неужели никто не сталкивался с такой задачей?
Записан
qate
Супер
******
Offline Offline

Сообщений: 1177


Просмотр профиля
« Ответ #3 : Ноябрь 05, 2014, 12:22 »

обычно жор памяти смотрят средствами системы, смотреть же самим приложением -  это редкость

для linux есть pmap - можно посмотреть как она считает память
для венды не знаю )

на основании этих данных можно написать свой класс подсчета пожираемой памяти
Записан
vulko
Гость
« Ответ #4 : Ноябрь 05, 2014, 13:04 »

может эту память жрет флеш плагин и нужно флеш кодерам руки пообрывать?))
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #5 : Ноябрь 05, 2014, 15:18 »

Какая ОС и компилятор?
Записан
vizir.vs
Гость
« Ответ #6 : Ноябрь 05, 2014, 15:58 »

Какая ОС и компилятор?

Нужно именно кросс платформенное решение.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #7 : Ноябрь 05, 2014, 16:39 »

Неужели никто не сталкивался с такой задачей?
Да сталкивались-то многие, вот только удобного кросс-платформенного решения не видно. Или лезть в нативняк или перекрывать глобально new/delete (тоже не мед)
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #8 : Ноябрь 05, 2014, 17:09 »

Нужно именно кросс платформенное решение.
И Вы его предполагаете найти именно средствами Qt? Боюсь, что с таким "не сталкивался никто".
Записан
Hrundel
Гость
« Ответ #9 : Ноябрь 05, 2014, 19:08 »

Нужно именно кросс платформенное решение.

Кроссплатформенно, пожалуй не возможно из Qt. Наверное, нужно чистым С. И очень хорошо знать оси.
Записан
iBaaX
Гость
« Ответ #10 : Ноябрь 05, 2014, 23:42 »

Печалька.

Ну а как можно последить за потреблением памяти например flash плагином или допустим объектом QWebView,QNetworkAccessManager (естественно кросплатформенно и желательно средствами QT)?
Записан
qate
Супер
******
Offline Offline

Сообщений: 1177


Просмотр профиля
« Ответ #11 : Ноябрь 06, 2014, 08:51 »

нужно поставить последнею версию Qt, если поведение повторяется - искать имеющийся багрепорт или писать новый

кто выделил память в куче - думаю узнать "кто" это сделал наверно невозможно
теоретически можно попробовать вручную по памяти полазить, сравнить указатели - но эта идея очень сырая

если страницу с флешем предполагается обновлять - то можно сделать обновление по таймеру, хотя это и неправильно
Записан
iBaaX
Гость
« Ответ #12 : Ноябрь 07, 2014, 02:46 »

По таймеру обновлять глупо и не правильно.
Надо именно по достижению определенного предела памяти.
Утечка идет определенно через flash и так как он не мой то решить проблему можно только обновлением страницы, но не тупо по таймеру а по пределу использованной памяти.

Обидно что никто таки и не пытался решить это кроссплатформенно.
Но я все равно жду, может кто еще чего скажет?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #13 : Ноябрь 07, 2014, 11:20 »

Обидно что никто таки и не пытался решить это кроссплатформенно.
Но я все равно жду, может кто еще чего скажет?
Был предложен вариант с перекрытием new/delete. Чего же Вы не "попытались решить"?. Наверное потому что надо копаться, велосипедить и хз удастся ли. А вот так, в позиции "обиженного", куда проще  Улыбающийся

По таймеру обновлять глупо и не правильно.
Надо именно по достижению определенного предела памяти.
Утечка идет определенно через flash и так как он не мой то решить проблему можно только обновлением страницы, но не тупо по таймеру а по пределу использованной памяти.
Не уверен что "цель оправдывает средства". Может все проще - раз жрет значит надо, напр кеширует. Лучше поизучать flash, сейчас Вы хотите решить не свою проблему.
Записан
vulko
Гость
« Ответ #14 : Ноябрь 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.
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.122 секунд. Запросов: 22.