Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ и WinAPI
Войти
Регистрация
Восстановить пароль
 
Dragokas
Эксперт WindowsАвтор FAQ
16922 / 7007 / 851
Регистрация: 25.12.2011
Сообщений: 10,804
Записей в блоге: 16
#1

Очистка оперативной памяти, не используемой системой - C++ WinAPI

11.01.2013, 19:16. Просмотров 1248. Ответов 7
Метки нет (Все метки)

Допустим, на ОС выполняются процессы.
Некоторые из них могут дать сбой -> Crash,
другие криво написаны и после их завершения часть памяти, используемая ними ранее, "не высвобождается".

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

...И простите за скудную терминологию, в работе с памятью мало чего знаю,
хочется и учится, и готовое попробовать (главное систему не повесить =).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2013, 19:16
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Очистка оперативной памяти, не используемой системой (C++ WinAPI):

Подсчет размера используемой приложением памяти
Добрый вечер, я написал 2 приложения и мне нужно узнать какое по памяти лучше....

Показать размер памяти, используемой конкретным процессом
Пытаюсь сделать программу которая будет показывать кол-во используемой памяти...

Определение размера динамической памяти, используемой процессом
Доброго всем времени суток! В общем задача следующая... Я, с помощь функции...

Снимок оперативной памяти
Возможно ли на си++ написать консольную программу, которая бы делала снимок ОП,...

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

Определить производителя оперативной памяти
Подскажите, пожалуйста, какими способами можно выполнить определение...

7
Vourhey
Почетный модератор
6490 / 2264 / 187
Регистрация: 29.07.2006
Сообщений: 12,534
11.01.2013, 19:23 #2
Dragokas, система освободит память по завершению работы процесса. Не важно, крэш это был, или что-то еще.
0
WhiteP
611 / 209 / 32
Регистрация: 20.11.2012
Сообщений: 433
Завершенные тесты: 1
11.01.2013, 19:27 #3
Цитата Сообщение от Dragokas Посмотреть сообщение
другие криво написаны и после их завершения часть памяти, используемая ними ранее, "не высвобождается"
Система освобождает всю память, занятую процессом автоматически после его завершения. Если речь про волшебные программы, которые освобождают память - то они просто добиваются того, что болшАя часть будет скинута в своп...
1
Dragokas
Эксперт WindowsАвтор FAQ
16922 / 7007 / 851
Регистрация: 25.12.2011
Сообщений: 10,804
Записей в блоге: 16
11.01.2013, 19:27  [ТС] #4
Vourhey, из того, что я знаю, я так и представлял.

Т.е. по сути, так как я написал - не бывает?

Когда-то запускал подобные программы, все таки по общей занимаемой памяти
было видно - на какие-то 20 Мб. стало больше свободной. Вот и интересуюсь.

Вообщем, нужно это для сервера (все, что могли из служб вырубили).
Все равно упираемся в предел. Чужих тулзов запускать не хотелось. Хотя бы знать , что они творят с системой при этой "якобы очистке".

WhiteP, а, теперь понятно.
0
Vourhey
Почетный модератор
6490 / 2264 / 187
Регистрация: 29.07.2006
Сообщений: 12,534
11.01.2013, 19:36 #5
Цитата Сообщение от Dragokas Посмотреть сообщение
Хотя бы знать , что они творят с системой при этой "якобы очистке".
Как еще вариант, "оно" может просто сбрасывать кэш или его часть.
0
Dragokas
Эксперт WindowsАвтор FAQ
16922 / 7007 / 851
Регистрация: 25.12.2011
Сообщений: 10,804
Записей в блоге: 16
11.01.2013, 19:38  [ТС] #6
А возможно ли и на сколько сложен принцип реализации:

ограничить при запуске или у уже запущенного процесса максимальную квоту объема используемой ним памяти в надежде, что при ее превышении ОС будет использовать файл подкачки.
И в результате - на сколько стабильное поведение от процесса можно в этом случае ожидать?
0
Vourhey
Почетный модератор
6490 / 2264 / 187
Регистрация: 29.07.2006
Сообщений: 12,534
11.01.2013, 19:55 #7
Цитата Сообщение от Dragokas Посмотреть сообщение
ограничить при запуске или у уже запущенного процесса максимальную квоту объема используемой ним памяти
Почитай мсднчик на тему работы с задачами. В частности: SetInformationJobObject апи. Навряд ли он полезет в своп, если ты ему ограничил объем памяти. Думаю, что лимитам пофигу, где ты собрался выделять память, виртуальное пространство, как единое целое. Но, хз, могу и ошибаться.

Добавлено через 11 минут
Цитата Сообщение от Dragokas Посмотреть сообщение
на сколько стабильное поведение от процесса можно в этом случае ожидать?
так это, как вы закодите ))) если процесс при нехватке памяти будет говорить "асталависта, бейби" и вешаться/падать/барагозить, то - нестабильной. А если вы найдете выход, что делать, когда очередной new откажет на вас жениться, то - стабильной. Главное багов поменьше
1
Vourhey
Почетный модератор
6490 / 2264 / 187
Регистрация: 29.07.2006
Сообщений: 12,534
13.01.2013, 23:33 #8
Еще SetProcessWorkingSetSize посмотри.
1
13.01.2013, 23:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2013, 23:33
Привет! Вот еще темы с решениями:

Замерить объем оперативной памяти
Можно ли средствами WinAPI замерить объем оперативной используемой(занятой)...

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

Сбор и анализ данных в оперативной памяти
Подскажите пожалуйста, какие вы знаете способы сбора данных из оперативной...

Отобразить на графике текущее состояние оперативной памяти
Здравствуйте! Я хочу отобразить на графике текущее состояние оперативной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru