Russian Qt Forum
Ноябрь 22, 2024, 22:32
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Программирование
>
Общий
>
Доступная оперативная память?
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Доступная оперативная память? (Прочитано 9634 раз)
alexman
Гость
Доступная оперативная память?
«
:
Апрель 26, 2010, 20:34 »
Как узнать объем доступной оперативной памяти?
Записан
Alex Custov
Джедай : наставник для всех
Offline
Сообщений: 2063
Re: Доступная оперативная память?
«
Ответ #1 :
Апрель 26, 2010, 21:12 »
в каждой ОС по-разному. Тебе в какой?
Записан
alexman
Гость
Re: Доступная оперативная память?
«
Ответ #2 :
Апрель 26, 2010, 21:16 »
А кроссплатформенного решения нет?
Записан
BRE
Гость
Re: Доступная оперативная память?
«
Ответ #3 :
Апрель 26, 2010, 21:29 »
А что ты понимаешь под доступной оперативной памятью и для чего тебе нужна эта информация?
Записан
alexman
Гость
Re: Доступная оперативная память?
«
Ответ #4 :
Апрель 26, 2010, 21:43 »
Например, я хочу загружать из большого файла данные кусками! Хотелось бы знать какого размера кусок я могу прочитать в оперативку!?
Записан
BRE
Гость
Re: Доступная оперативная память?
«
Ответ #5 :
Апрель 26, 2010, 21:53 »
Цитата: alexman от Апрель 26, 2010, 21:43
Например, я хочу загружать из большого файла данные кусками! Хотелось бы знать какого размера кусок я могу прочитать в оперативку!?
Процесс работает в виртуальном адресном пространстве. Сколько страниц физической памяти ему в данный момент предоставит ОС зависит только от нее. В следующий момент она может выгрузить большую часть страниц в своп и отдать физическую память другому процессу.
По большому счету эта информация бесполезна. IMHO, лучше выбирать размер кусков, основываясь на других соображениях.
Записан
alexman
Гость
Re: Доступная оперативная память?
«
Ответ #6 :
Апрель 26, 2010, 22:07 »
Цитата: BRE от Апрель 26, 2010, 21:53
Цитата: alexman от Апрель 26, 2010, 21:43
Например, я хочу загружать из большого файла данные кусками! Хотелось бы знать какого размера кусок я могу прочитать в оперативку!?
Процесс работает в виртуальном адресном пространстве. Сколько страниц физической памяти ему в данный момент предоставит ОС зависит только от нее. В следующий момент она может выгрузить большую часть страниц в своп и отдать физическую память другому процессу.
По большому счету эта информация бесполезна. IMHO, лучше выбирать размер кусков, основываясь на других соображениях.
Ну или, например, если мы хотим, чтобы наше приложение занимало в оперативке памяти не больше определенной константы!
«
Последнее редактирование: Апрель 26, 2010, 22:53 от alexman
»
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Доступная оперативная память?
«
Ответ #7 :
Апрель 27, 2010, 09:38 »
Цитата: BRE от Апрель 26, 2010, 21:53
По большому счету эта информация бесполезна. IMHO, лучше выбирать размер кусков, основываясь на других соображениях.
Совершенно верно.
Цитата: alexman от Апрель 26, 2010, 22:07
Например, я хочу загружать из большого файла данные кусками! Хотелось бы знать какого размера кусок я могу прочитать в оперативку!?
Буфер 4-6 Mb вполне достаточно. Больший буфер прироста в скорости не даст.
Цитата: alexman от Апрель 26, 2010, 22:07
Ну или, например, если мы хотим, чтобы наше приложение занимало в оперативке памяти не больше определенной константы!
Это лучше задать на старте основываясь на размере физической памяти (напр 80%) и позволить пользователю менять это значение. И распределять основываясь на этом. Информация, полученная от ОС. будет динамична/неустойчива, напр. в какой-то момент памяти может быть мало (что-то мощное стартовало) и.т.п.
Записан
alexman
Гость
Re: Доступная оперативная память?
«
Ответ #8 :
Апрель 27, 2010, 09:46 »
Цитата: Igors от Апрель 27, 2010, 09:38
]Это лучше задать на старте основываясь на размере физической памяти (напр 80%) и позволить пользователю менять это значение.
Спасибо! Это понял!
Записан
BRE
Гость
Re: Доступная оперативная память?
«
Ответ #9 :
Апрель 27, 2010, 12:25 »
Цитата: alexman от Апрель 27, 2010, 09:46
Цитата: Igors от Апрель 27, 2010, 09:38
]Это лучше задать на старте основываясь на размере физической памяти (напр 80%) и позволить пользователю менять это значение.
Спасибо! Это понял!
Да не нужно привязываться к физической памяти. Эта величина тоже ничего не дает.
Предположим, что платформа 32 битная.
На машине установлено 512 Мб оперативной памяти, я очень сильно сомневаюсь, что приложение получит 80% от нее (имеется ввиду физическая память), ОС найдет ей другое применение.
Или на машине установлено 32 Гб оперативки, приложение физически (без дополнительных телодвижений) не сможет адресовать больше 4 Гб (а на самом деле в зависимости от ОС - 2 или 3 Гб).
Короче, не морочь себе пейсы.
«
Последнее редактирование: Апрель 27, 2010, 12:27 от BRE
»
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Доступная оперативная память?
«
Ответ #10 :
Апрель 27, 2010, 15:28 »
Цитата: BRE от Апрель 27, 2010, 12:25
Да не нужно привязываться к физической памяти. Эта величина тоже ничего не дает.
Дает. Разумеется, для 32-битного подсекаем размер физической памяти до 2 Gb. А вот если стоит всего 512, то ОС будет выделять, скажем, 1 Gb и больше - но с очень печальными последствиями. В 64-битах ситуация та же но в большем масштабе.
Цитата: BRE от Апрель 27, 2010, 12:25
Короче, не морочь себе пейсы.
Не морочу ввиду отсутствия таковых
Записан
BRE
Гость
Re: Доступная оперативная память?
«
Ответ #11 :
Апрель 27, 2010, 15:34 »
Цитата: Igors от Апрель 27, 2010, 15:28
Дает. Разумеется, для 32-битного подсекаем размер физической памяти до 2 Gb. А вот если стоит всего 512, то ОС будет выделять, скажем, 1 Gb и больше - но с очень печальными последствиями. В 64-битах ситуация та же но в большем масштабе.
Ну так а что в таком случае дает?
Если стоит 512 Мб, то 80% от нее ты вряд-ли получишь.
Тогда для чего все это?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Доступная оперативная память?
«
Ответ #12 :
Апрель 27, 2010, 15:49 »
Цитата: BRE от Апрель 27, 2010, 15:34
Ну так а что в таком случае дает?
Если стоит 512 Мб, то 80% от нее ты вряд-ли получишь.
Тогда для чего все это?
Можно "получить" (то есть выделить) и 160%. а когда и 300%
Разумеется я не узнаю "что" я получил, реальная ли это память или страницы на диске. Мне важно знать стОит ли выделять больше памяти или уже пришла пора обработать часть данных, выдать результаты и затем заниматься следующей порцией (пусть с накладными расходами).
Записан
BRE
Гость
Re: Доступная оперативная память?
«
Ответ #13 :
Апрель 27, 2010, 15:51 »
Цитата: Igors от Апрель 27, 2010, 15:49
Мне важно знать стОит ли выделять больше памяти или уже пришла пора обработать часть данных
Как ты это узнаешь? Особенно опираясь на размер физической памяти.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Доступная оперативная память?
«
Ответ #14 :
Апрель 27, 2010, 16:08 »
Цитата: BRE от Апрель 27, 2010, 15:51
Цитата: Igors от Апрель 27, 2010, 15:49
Мне важно знать стОит ли выделять больше памяти или уже пришла пора обработать часть данных
Как ты это узнаешь? Особенно опираясь на размер физической памяти.
Просто вычисляем предельное (максимальное) значение один раз на старте. Ведем статистику сколько уже распределено. Сравниваем выделено - предел, напр.
Код:
size_t numLines = (MaxMem() - MemAllocated()) / lineSize;
Записан
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...