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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: QT и память  (Прочитано 15476 раз)
pakulo
Гость
« : Апрель 08, 2007, 13:07 »

Добрый день,

У меня такой вопрос. Создал простенькую программку на QT, просто кнопка. И она у меня в памяти занимает 12мб. Посмотрев многие примеры, оказалось что минимальный размер программы с библиотекой QT будет 10мб где-то.
Возможно ли как-то уменьшить этот показатель?
Если у меня программка будет сидеть в трее, можно ли сделать, что бы она занимала не 10мб, а скажем 1мб...

Спасибо
Записан
noosooth
Гость
« Ответ #1 : Апрель 08, 2007, 16:15 »

Боюсь радикально тут ничего не сделать.
Жрет память, зараза Улыбающийся, что для библиотеки такого класса и при нынешних объемах памяти - вполне нормально.
Боюсь для Вас это будет слабым утешением, но при увеличении Вашего собственного кода (не одна кнопка, а скажем двадцать одна)
размер потребляемой памяти растет не так радикально.

Ещё такой нюанс (если Вы под виндой):
Скажем моё поделие (Qt 4.2.3) под XP и XP64, если верить Task Manager,занимает в памяти 10-11 метров.
Если приложение свернуть (минимизировать), то Task Manager показывает всего-лишь 1,5 метра.

Тут пробовал запускать под Vista x64 - тамошний Task Manager или как
его там зовут - кажет стабильно 8 c лишним мегабайт, в том числе и для
"свернутого" приложения.

Спрашивается кому верить?
(бинарник один и тот же, Qt собран статически)
Записан
pakulo
Гость
« Ответ #2 : Апрель 08, 2007, 16:20 »

>>Если приложение свернуть (минимизировать), то Task Manager показывает всего-лишь 1,5 метра.

Да, я видел это. Мне вот интересно. Это реализовано библиотекой или ОС сама это делает. Т.е. может при минимизации она сама уменьшает память, копируя данные на диск.. Улыбающийся

Тогда такой вопрос. У меня программа занимает 20Мб, я поработал, свернул ее в трей, как мне сделать что бы уменьшилась память? т.е. также как при минимизации...
Записан
_govorilka
Гость
« Ответ #3 : Апрель 08, 2007, 16:40 »

Цитата: "pakulo"
Добрый день,

У меня такой вопрос. Создал простенькую программку на QT, просто кнопка. И она у меня в памяти занимает 12мб. Посмотрев многие примеры, оказалось что минимальный размер программы с библиотекой QT будет 10мб где-то.
Возможно ли как-то уменьшить этот показатель?
Если у меня программка будет сидеть в трее, можно ли сделать, что бы она занимала не 10мб, а скажем 1мб...

Спасибо


Раздели свою программу на две половинки (сделай два exe-файла):
1. То, что постоянно весит в трее
2. То, что запускается в отдельном процессе, после каких-либо действий пользователя (щелчок мыши по иконке, расписание или системное событие).
В первом куске, не используй никаких Gui-примочек (исключение cоставляет разве, что иконка в трее), тогда объем памяти будет гораздо меньше.

добавлено спустя 17 минут:

 
Цитата: "noosooth"

Ещё такой нюанс (если Вы под виндой):
Скажем моё поделие (Qt 4.2.3) под XP и XP64, если верить Task Manager,занимает в памяти 10-11 метров.
Если приложение свернуть (минимизировать), то Task Manager показывает всего-лишь 1,5 метра.


Это глюк Task Manager'а. Вместо него пользуюсь бесплатной Process Explorer (скачать можно отсюда - http://www.microsoft.com/technet/sysinternals/ProcessesAndThreads/ProcessExplorer.mspx).
Записан
pakulo
Гость
« Ответ #4 : Апрель 08, 2007, 16:58 »

Не, разделять на две программы не можно.
Может просто есть какая-нить функция чистки памяти? Улыбающийся
Записан
_govorilka
Гость
« Ответ #5 : Апрель 08, 2007, 17:18 »

Цитата: "pakulo"
Не, разделять на две программы не можно.
Может просто есть какая-нить функция чистки памяти? Улыбающийся


Цитата: "pakulo"
Не, разделять на две программы не можно.
Может просто есть какая-нить функция чистки памяти? Улыбающийся


Разделение на две программы - это не способ чистки памяти, это способ оптимизации программы. Зачем постоянно держать в трее Gui-поток?
Записан
pakulo
Гость
« Ответ #6 : Апрель 08, 2007, 17:56 »

Проблема в том, что у меня программа клиент, скажем до сервера АСИ.
Поэтому возможности разделить на две программы нету. ((
Записан
_govorilka
Гость
« Ответ #7 : Апрель 08, 2007, 18:19 »

Цитата: "pakulo"
Проблема в том, что у меня программа клиент, скажем до сервера АСИ.
Поэтому возможности разделить на две программы нету. ((


Найди в форме тему о размере exe, мне кажется, там есть ответы интересные для тебя.

Попробуй оптимизировать саму библиотеку Qt (Отключи классы, которые тебе не нужны), включи максимальную оптимизацию кода в настройках компилятора и т.д.
Записан
noosooth
Гость
« Ответ #8 : Апрель 08, 2007, 18:22 »

Цитата: "_govorilka"

 
Цитата: "noosooth"

...Если приложение свернуть (минимизировать), то Task Manager показывает всего-лишь 1,5 метра.

Это глюк Task Manager'а. Вместо него пользуюсь бесплатной Process Explorer ...


Не вижу никакой разницы между показаниями
Task Manager'а (Mem Usage) и Process Explorer'а (Working set) под XP64 SP2. Абсолютно одно и тоже.
Где глюк-то?

Насчет Vista, виноват, не туда смотрел.
Тоже уменьшает размер при свертывании, но не так радикально.
Записан
_govorilka
Гость
« Ответ #9 : Апрель 08, 2007, 18:28 »

У меня Windows XP Pro SP2, а Process Explorer, как мне кажется, просто удобнее стандартного Task Manager'a
Записан
noosooth
Гость
« Ответ #10 : Апрель 08, 2007, 18:50 »

Цитата: "_govorilka"
У меня Windows XP Pro SP2, а Process Explorer, как мне кажется, просто удобнее стандартного Task Manager'a

И такая операционка где-то тут у меня валяется и тоже показания одинаковые.
Про глюк Вы пошутили или к слову пришлось?
Записан
_govorilka
Гость
« Ответ #11 : Апрель 08, 2007, 19:12 »

Цитата: "noosooth"

И такая операционка где-то тут у меня валяется и тоже показания одинаковые.
Про глюк Вы пошутили или к слову пришлось?


Можно вопрос, чем так быстро оси меняете?
Записан
noosooth
Гость
« Ответ #12 : Апрель 08, 2007, 20:07 »

Да просто несколько осей на разных винтах да разделах + Grub.
Перезагрузится недолго вроде Подмигивающий.

Наверное что-нить вроде VMware в данном случае удобнее, но я так сказать напрямую желаю без "посредников".
Честно говоря, достал этот зоопарк из "многообразных" операционных систем от M$.
Записан
Alex03
Гость
« Ответ #13 : Апрель 09, 2007, 09:04 »

Вроде как XP буферизирует (частично) видео вывод, вот выделяет память под окна.
Записан
Mr. Пронька
Гость
« Ответ #14 : Апрель 09, 2007, 09:39 »

Цитировать
Вроде как XP буферизирует (частично) видео вывод, вот выделяет память под окна.

Всякое возможно. А с другими приложениями вы этот трюк наблюдали? Я уже когда-то поднимал тему про выделение памяти в Qt-приложениях, но никто ничего толком ответить не смог. Дело не только в том, что при сворачивании количество потребляемой памяти снижается. При разворачивании окна на весь экран оно ещё и увеличивается!
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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