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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: QT и память  (Прочитано 15144 раз)
noosooth
Гость
« Ответ #15 : Апрель 09, 2007, 10:06 »

Господа, про уменьшение "Mem Usage" (Working Set) под виндой при
минимизации top-level окна читайте вот здесь.

Ну и про функцию SetProcessWorkingSetSize() в MSDN.
Записан
pakulo
Гость
« Ответ #16 : Апрель 09, 2007, 16:27 »

Mr. Пронька,
Вот именно, поэтому я и спросил. Мне кажеться что это все работа ХР. Такое наблюдал я и с Оперой, занимает 80мб, свернул уже 20Мб (Она тоже на QT). Вот Лиса никак не уменьшает память при сворачивание. Поэтому меня и интересует, это дело библиотеки или ОС. Свернул Ворд, занимал 20Мб, стало 1Мб. Свернул Експлорер было 15Мб, стало 1.5Мб. Все как-то странно.
И почему когда я сворачиваю в трей программу на КуТе, то память не уменьшается? Улыбающийся

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

 У кого есть utorrent или MSN, то можно увидеть, что при сворачивании программы в трей, размер занимаемый программой в памяти уменьшается.
Как это реализовано?
Записан
_govorilka
Гость
« Ответ #17 : Апрель 09, 2007, 16:39 »

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

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


Вывод буферизирует не XP, а Qt, причем использует для этого QPixmap. Чем больше размер вашего окна, тем требуется для хранения буфера. При сворачивании буфер уничтожается, поэтому программа потребляет меньше памяти.
Записан
pakulo
Гость
« Ответ #18 : Апрель 09, 2007, 17:29 »

Как можно реализовать очистку буфера когда программа сворачивается в трей?
Записан
_govorilka
Гость
« Ответ #19 : Апрель 09, 2007, 17:33 »

Цитата: "pakulo"
Как можно реализовать очистку буфера когда программа сворачивается в трей?


Qt сама очищает буфер, при сворачивание окна, а вот операционка  (WinXP) очищает неиспользуемую память через раз.

Не понимаю, почему ты так зациклился на этой проблеме, неужели других нет.
Записан
pakulo
Гость
« Ответ #20 : Апрель 09, 2007, 17:40 »

Проблем много. Решаю все параллельно Улыбающийся
Эта проблема очень волнует, так как программа в памяти может занимать до 20Мб и когда свернул ее в трей, всеравно 20Мб, а хотелось бы по меньше.

QT не очищает буфер при сворачивании в трей, очищает при минимизации.
Записан
_govorilka
Гость
« Ответ #21 : Апрель 09, 2007, 18:05 »

Цитата: "pakulo"
Проблем много. Решаю все параллельно Улыбающийся
Эта проблема очень волнует, так как программа в памяти может занимать до 20Мб и когда свернул ее в трей, всеравно 20Мб, а хотелось бы по меньше.

QT не очищает буфер при сворачивании в трей, очищает при минимизации.


Можно вопрос, какой компилятор используешь? С какими настройками?
Записан
pakulo
Гость
« Ответ #22 : Апрель 09, 2007, 18:15 »

Использую mingw32.
Какие настройки нужны?
Записан
_govorilka
Гость
« Ответ #23 : Апрель 09, 2007, 18:23 »

Цитата: "pakulo"
Использую mingw32.
Какие настройки нужны?


Мне кажется, что VS все-таки лучше, чем mingw32 (после этого сообщения все опять начнут Holy War), программы занимают меньше памяти и код выполняется быстрее. Установи и сравни, в любой случае всегда потом сможешь удалить. Почитай тему про компиляторы, там есть полезные ответы.

Вовремя удаляй не нужные объекты, например, при сворачивание в трей, можно удалить окно программы, а при разворачивание создать его заново.
Записан
pakulo
Гость
« Ответ #24 : Апрель 09, 2007, 19:02 »

Спасибо буду смотреть.
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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