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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Загрузка оперативной памяти  (Прочитано 6870 раз)
cutwater
Гость
« : Сентябрь 18, 2007, 00:19 »

Доброго времени суток, уважаемые знатоки.

Пишу небольшое приложение на Куте.
Столкнулся с проблемой, что любое приложение, даже очень маленькое жрет около 9-10 метров оперативной памяти.

Вопрос, нельзя ли каким-либо образом оптимизировать приложение, как с этим бороться, да и из-за чего такая загрузка?
Записан
andi
Гость
« Ответ #1 : Сентябрь 18, 2007, 05:06 »

Ох, фигасе!!!
У меня проект (15 форм, и строк там тыщ несколько) жрет 11 метров (это с отладочной инфой!!!).
При таких заявлениях сразу хочется увидеть версию Qt, платформу ну и конечно *.pro
Скорей всего статически линкуете все подряд (да еще с отладочными версиями).
Записан
cutwater
Гость
« Ответ #2 : Сентябрь 18, 2007, 09:20 »

Спасибо за инфу. Вот только не нада таких громких заявлений... я новичек и на куте программирую недавно.

А вообще говорю даже об их екземплах, которые вместе с библиотекой идут.
Записан
spigel
Гость
« Ответ #3 : Сентябрь 18, 2007, 11:09 »

да, размер графической программки в Qt большой - посмотрите на размеры dll, они же целиком в памяти вашей программы располагаются!
при этом разделяемая часть также прибавляется к вашей программе - виртуальная память не обязательно вся в RAM находится!.
Записан
cutwater
Гость
« Ответ #4 : Сентябрь 18, 2007, 12:31 »

Тогда следующий вопрос... тут уже с долей ламерства.

Если у меня запускаются два экземпляра программы, то каждая из них грузит в память библиотеки.
Я слышал есть возможность использования одного кода несколькими процессами, посоветуйте пожалуйста, где об этом можно почитать, желательно конкретные ключевые слова, чтобы я мог самостоятельно найти нужную информацию, что это за технология и как ее применять.

(Относительно ОС Windows)
Записан
Tonal
Гость
« Ответ #5 : Сентябрь 18, 2007, 12:35 »

Винда делает это автоматом.
Записан
cutwater
Гость
« Ответ #6 : Сентябрь 18, 2007, 12:58 »

Ничего подобного. Проверял.
Записан
Dodge
Гость
« Ответ #7 : Сентябрь 18, 2007, 13:12 »

Ничего подобного. Проверял.

Ерунду не надо писать, если вы используете динамические библиотеки(не важно как они линкуются к вашему приложению), то windows подгрузит только 1 копию dll, запусти вы хоть миллион копий своего приложения, вопрос в том как вы узнали объем памяти занимаемый вашим приложением, на сколько мне извесно, через стандартные средство вышеуказанной оси, это zделать невозможно. Есть замечательная программа TaskExplorerEX(если не ошибаюсь), вот с помощью нее, вы можете посмотреть объем памяти занимаемый именно вашим "кодом".

З.Ы. Смотреть нада не на вессь процесс, а на ваш модуль в этом процессе.
Записан
cutwater
Гость
« Ответ #8 : Сентябрь 18, 2007, 13:37 »

Прошу прощенья, действительно сказал глупость. В рамках одного процесса длл загружается только один раз... верно, однако не в рамках разных процессов... если уж отойти немного от темы.... как тогда, если я хочу использовать для разных программ одну библиотеку, и загружая ее только раз в программу. Я знаю, что это возможно при помощи технологии СОМ, может есть еще другие способы?
Записан
cutwater
Гость
« Ответ #9 : Сентябрь 18, 2007, 13:47 »

Я думаю я уже сам запутался и не знаю чего мне нада. Большое спасибо всем за помощь, буду дальше читать маны.
Записан
spigel
Гость
« Ответ #10 : Сентябрь 18, 2007, 14:17 »

да, использование COM в некоторых случаях позволит разделить оперативную память вашей программы от библиотечной - так чтобы библиотека не могла использовать ваши адреса для чтения или записи. в большинстве случаев все работает в общей памяти и из-за ошибки в библиотеке падает все.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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