очистка памяти в windows server 2022

prostors

Client
Регистрация
16.12.2020
Сообщения
1 464
Реакции
85
Баллы
48
очистка памяти в windows server 2022
за несколько дней забило 87 гб памяти, включая файл подкачки

решил мне вопрос ИИ за 5 промтов:
Код:
Развернуть Свернуть Копировать
@echo off
title RAM Monitor and Auto-Cleaner

:: === НАСТРОЙКИ ===
set THRESHOLD=90
set INTERVAL=60
:: Интервал очистки RAMMap в секундах (300 секунд = 5 минут)
set CLEAN_INTERVAL=300
:: Путь к вашей утилите RAMMap64
set "RAMMAP_PATH=C:\Users\Administrator\Downloads\RAMMap\RAMMap64.exe"
:: =================

:: Создаем скрипт во временной папке Windows
set "PS_FILE=%temp%\ram_monitor_script.ps1"

echo $Threshold = %THRESHOLD% > "%PS_FILE%"
echo $Interval = %INTERVAL% >> "%PS_FILE%"
echo $CleanInterval = %CLEAN_INTERVAL% >> "%PS_FILE%"
echo $RamMapPath = "%RAMMAP_PATH%" >> "%PS_FILE%"
echo $LastCleanTime = [System.Diagnostics.Stopwatch]::StartNew() >> "%PS_FILE%"

echo Write-Host "Monitoring and auto-cleaner started." -ForegroundColor Cyan >> "%PS_FILE%"
echo Write-Host "Reboot threshold: $Threshold%%" -ForegroundColor Cyan >> "%PS_FILE%"
echo Write-Host "Check interval: $Interval sec | Clean interval: $CleanInterval sec" -ForegroundColor Cyan >> "%PS_FILE%"
echo Write-Host "---------------------------------------------------" >> "%PS_FILE%"

echo while ($true) { >> "%PS_FILE%"
echo     try { >> "%PS_FILE%"
echo         $os = Get-CimInstance Win32_OperatingSystem -ErrorAction Stop >> "%PS_FILE%"
echo         $ram = [math]::Round((($os.TotalVisibleMemorySize - $os.FreePhysicalMemory) / $os.TotalVisibleMemorySize) * 100) >> "%PS_FILE%"
echo         $time = (Get-Date).ToString("HH:mm:ss") >> "%PS_FILE%"
echo         Write-Host "[$time] Current RAM Usage: $ram%%" >> "%PS_FILE%"
echo. >> "%PS_FILE%"
echo         # Проверка интервала очистки >> "%PS_FILE%"
echo         if ($LastCleanTime.Elapsed.TotalSeconds -ge $CleanInterval) { >> "%PS_FILE%"
echo             Write-Host "[$time] [Action] 5 minutes passed. Starting deep memory clean..." -ForegroundColor Magenta >> "%PS_FILE%"
echo             if (Test-Path $RamMapPath) { >> "%PS_FILE%"
echo                 $ramBefore = $ram >> "%PS_FILE%"
echo                 # Запуск RAMMap >> "%PS_FILE%"
echo                 Start-Process -FilePath $RamMapPath -ArgumentList "-Ew" -Wait -NoNewWindow >> "%PS_FILE%"
echo                 Start-Process -FilePath $RamMapPath -ArgumentList "-Es" -Wait -NoNewWindow >> "%PS_FILE%"
echo                 Start-Sleep -Seconds 3 >> "%PS_FILE%"
echo. >> "%PS_FILE%"
echo                 # Замер после очистки >> "%PS_FILE%"
echo                 $osPost = Get-CimInstance Win32_OperatingSystem >> "%PS_FILE%"
echo                 $ramAfter = [math]::Round((($osPost.TotalVisibleMemorySize - $osPost.FreePhysicalMemory) / $osPost.TotalVisibleMemorySize) * 100) >> "%PS_FILE%"
echo                 Write-Host "[$time] [Success] Memory cleared: was $ramBefore%%, now $ramAfter%%" -ForegroundColor Green >> "%PS_FILE%"
echo                 $ram = $ramAfter >> "%PS_FILE%"
echo             } else { >> "%PS_FILE%"
echo                 Write-Host "[Error] RAMMap64.exe not found at: $RamMapPath" -ForegroundColor Yellow >> "%PS_FILE%"
echo             } >> "%PS_FILE%"
echo             $LastCleanTime.Restart() >> "%PS_FILE%"
echo         } >> "%PS_FILE%"
echo. >> "%PS_FILE%"
echo         # Проверка критического порога >> "%PS_FILE%"
echo         if ($ram -ge $Threshold) { >> "%PS_FILE%"
echo             Write-Host "CRITICAL: RAM limit exceeded ($ram%%)! Forcing reboot..." -ForegroundColor Red >> "%PS_FILE%"
echo             shutdown /r /f /t 15 /c "RAM limit exceeded" >> "%PS_FILE%"
echo             break >> "%PS_FILE%"
echo         } >> "%PS_FILE%"
echo     } catch { >> "%PS_FILE%"
echo         Write-Host "Error fetching RAM data. Retrying..." -ForegroundColor Yellow >> "%PS_FILE%"
echo     } >> "%PS_FILE%"
echo     Start-Sleep -Seconds $Interval >> "%PS_FILE%"
echo } >> "%PS_FILE%"

:: Запуск
powershell -NoProfile -ExecutionPolicy Bypass -File "%PS_FILE%"

echo.
pause

раз в 5 минут очищает память, запускать от имени администратора
выглядит лог
Monitoring and auto-cleaner started.
Reboot threshold: 90%
Check interval: 60 sec | Clean interval: 300 sec
---------------------------------------------------
[09:08:24] Current RAM Usage: 34%
[09:09:24] Current RAM Usage: 35%
[09:10:24] Current RAM Usage: 37%
[09:11:24] Current RAM Usage: 36%
[09:12:24] Current RAM Usage: 35%
[09:13:24] Current RAM Usage: 37%
[09:13:24] [Action] 5 minutes passed. Starting deep memory clean...
[09:13:24] [Success] Memory cleared: was 37%, now 28%
[09:14:30] Current RAM Usage: 32%
[09:15:30] Current RAM Usage: 34%
[09:16:30] Current RAM Usage: 32%
[09:17:31] Current RAM Usage: 33%
[09:18:31] Current RAM Usage: 32%
[09:18:31] [Action] 5 minutes passed. Starting deep memory clean...
[09:18:31] [Success] Memory cleared: was 32%, now 28%
[09:19:37] Current RAM Usage: 27%
[09:20:37] Current RAM Usage: 31%
[09:21:37] Current RAM Usage: 36%
[09:22:37] Current RAM Usage: 34%
[09:23:37] Current RAM Usage: 35%
[09:23:37] [Action] 5 minutes passed. Starting deep memory clean...
[09:23:37] [Success] Memory cleared: was 35%, now 29%
[09:24:43] Current RAM Usage: 30%

вот так
 
  • Спасибо
Реакции: Sergodjan

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)