Что нового

Разгрузить память

TorNeo

Новичок
Сообщения
21
Репутация
0
Здравствуйте. Имею удовольствие работать на маломощном офисном пк с 4 ГБ памяти. Все бы ничего, но в течении дня забивается оперативка. Для очистки использую vba скрипт, найденный на просторах интернета
Код:
MsgBox "Очистить ОЗУ?",0, "Очистка оперативной памяти"
FreeMem=Space(409600000)
Msgbox "Очистка ОЗУ выполнена успешно",0," Очистка оперативной памяти"
Размер памяти расчитывается по формуле: Объём ОЗУ (Гб)x1024x100000

Все бы ничего, но хотелось бы автоматизировать данную процедуру, т.е. чтобы скрипт проверял память и если видит, что она забита более чем на 90% запускал чистку

Получить объем памяти как я понял можно через MemGetStats

Накидал на скорую руку небольшой скрипт
Код:
While Sleep(1000)
$mem = MemGetStats()
If $mem[1] >= $mem[1]*80/100 Then

; тут чистка

Else
EndIf
WEnd
Но не могу понять, как запустить чистку. В справке не удалось найти информации. Буду признателен любой помощи
 
Автор
T

TorNeo

Новичок
Сообщения
21
Репутация
0
Я бы с радостью, если бы понимал, что он делает ... Там как-то всего очень много и даже гугл не помог разобраться что, зачем и почему

P.S. Подскажите еще пожалуйста, где можно почитать про файлы инклюдов, чтоб понимать, за что какой файл отвечает. А то пихаю как в примерах, а возможно мне этого и не надо
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
где можно почитать про файлы инклюдов
Код:
#include ; <== кликните, откроется справка


если бы понимал, что он делает
 
Автор
T

TorNeo

Новичок
Сообщения
21
Репутация
0
#include ; <== кликните, откроется справка
это читал, но там нет описания, что такое <MsgBoxConstants.au3>, <WinAPIProc.au3>, <WinAPIShPath.au3> и др.

Стол заказов не подходит, т.к. самому надо разобраться, для общего развития так сказать ... а с примером по ссылке непонятки хотя бы потому, что он что он завязан на taskmgr.exe, а меня не интересует конкретное приложение, а вся память. Как-то так ...
 

Oki

Продвинутый
Сообщения
452
Репутация
62
Разве можно без разбору чистить всё подряд и надеяться на то, что это не затронет операционную систему? Не лучше ли её просто перезагружать? Перед тем позаботившись, чтобы скрипт снова запустился после перезагрузки.

Может быть, хватит даже того, чтобы отследить какие процессы начали работу не сразу после перезагрузки (нужен надёжный интервал, чтобы случайно не захватить автоматически загружающиеся процессы), и освобождать ресурсы от самих процессов. Это будет приводить компьютер примерно в то же состояние, что и после перезагрузки, если речь только не идёт о мусоре, который существует вопреки завершению процессов. При таком подходе можно даже специально ограждать от силового прекращения избранные процессы из белого списка.
 
Последнее редактирование:
Автор
T

TorNeo

Новичок
Сообщения
21
Репутация
0
пока проблем с вба скриптом не возникало, использую более месяца. Поэтому и пытаюсь его функционал автоматизировать средствами автоита
 

Prog

Продвинутый
Сообщения
537
Репутация
65
Для очистки использую vba скрипт, найденный на просторах интернета
Он не чистит оперативную память.
Скрипт запрашивает около 410 МБ памяти и все.
Это приведет к тому что часть данных из памяти будет перенесена в файл подкачки. Но когда потребуются эти данные, начнутся тормоза в работе программ.
 
Автор
T

TorNeo

Новичок
Сообщения
21
Репутация
0
Это приведет к тому что часть данных из памяти будет перенесена в файл подкачки. Но когда потребуются эти данные, начнутся тормоза в работе программ.
Если честно, не замечал тормозов за время работы. Но если они возможны, то да, не самый лучший вариант. А какие есть альтернативы ?
 
Автор
T

TorNeo

Новичок
Сообщения
21
Репутация
0
А если без радикальных мер попытаться решить задачу средствами autoit ?
 

Prog

Продвинутый
Сообщения
537
Репутация
65
Программно объем памяти увеличить нельзя. Это все равно что пытаться в обычное ведро налить тонну воды так чтобы она не разлилась. Нальете 10 литров, а дальше? Места нет. С памятью также.
Но если устроят постоянные тормоза, увеличьте файл подкачки до 64 ГБ, но предупреждаю сразу, при исчерпании физической памяти комп будет работать так медленно что можно пойти покурить, покушать и поспать пока программа пытается запустится. Диск на котором файл подкачки быстро выйдет из строя.

Если нет возможности увеличить объем памяти тогда:
Поставьте Windows XP x86.
Уберите все из автозагрузки.
Закройте все ненужные программы.
Отключите все службы кроме тех без которых ОС нормально работать не может.
Не запускайте программы требующие много ОЗУ. Лучше всего перейдите на версии программ 15-ти летней давности.
 
Автор
T

TorNeo

Новичок
Сообщения
21
Репутация
0
Вы мое сообщение выше читали ? И да, вы хр давно ставили ?

Давайте не будем превращать тему в балаган. Если не можете подсказать касаемо программного освобождения места - подождем тех, кто понимает, как это реализовать.

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

Oki

Продвинутый
Сообщения
452
Репутация
62
Скрипт приложенный выше справляется, нужна лишь автоматизация.
С таким упрямством эту тему можно закрыть и завести новую тему о том, как автоматизировать запуск VBA-скрипта.
 
Автор
T

TorNeo

Новичок
Сообщения
21
Репутация
0
Oki, запустить vba как оказалось не такая и сложная задача. Сейчас пытаюсь разобраться, как тот же самый функционал запихнуть в скрипт, но тут совсем грустно (((

Если кто поможет - буду безмерно благодарен
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Нужно увидеть сам скрипт vba
Вы темы читаете с последнего сообщения? :wink:

тот же самый функционал
Код:
#include <String.au3>
#include <MsgBoxConstants.au3>

If MsgBox($MB_YESNO, "Очистка оперативной памяти", "Очистить ОЗУ?") = $IDNO Then Exit
$FreeMem = _StringRepeat(" ", 409600000)
MsgBox($MB_OK, "Очистка оперативной памяти", "Очистка ОЗУ выполнена успешно")
 

RaZum

Знающий
Сообщения
78
Репутация
14
На сколько понимаю, всё сводится к обычному перемещению данных работающих программ, из озу на хард , с помощью запроса некоторого количества памяти для хранения данных, и ни о какой очистке общей выделенной памяти речи не идёт, так как для этого нужно уменьшить объём загруженных ими данных, необходимых для их работы, а это вмешательство в их работу!
Вообщем это способ временный, приводящий к резкому нарастанию обращений к харду. Для механики не айс (у меня уже колекция блинов разного калибра).
Что произойдет когда проги съедят весь хард подкачкой и забьют озу, сработает ли тогда данный способ?
Может лучше выгружать (или перезагружать) переодически второстепенные процессы (не основные проги)?
 
Верх