Тема: CMD/BAT: данные мониторинга утечки куч
В Windows 10 есть встроенный механизм фиксирующий утечки куч. Получить статистику в удобочитаемом виде можно следующим образом:
@echo off
setlocal enabledelayedexpansion
call:getOSVersion
if !ver! neq 10 echo:Win10 are strongly required.&&goto:eof
set "key=HKLM\SOFTWARE\Microsoft\RADAR\HeapLeakDetection"
set "key=%key%\DiagnosedApplications"
echo:Application name Time
echo:----------------- -----
for /f "tokens=3,7 delims=\ " %%i in (
'2^>nul reg query %key% /s /v LastDetectionTime'
) do (
if /i "%%~j" neq "" call:printf 37 %%j
if /i "%%~i" neq "microsoft" call:convertFiletimeToLocaltime %%~i
)
endlocal
exit /b
:getOSVersion
for /f "tokens=4 delims=. " %%i in ('ver') do set "ver=%%i"
exit /b
:printf
set "i=%~1" % rem : счётчик пробелов
set "s=%~2" % rem : входящая строка
:while
set "s=!s:~1!"
if defined s set /a "i-=1"&goto:while
set "s=%~2" % rem : добавили пробелов
for /l %%i in (1,1,!i!) do set "s=!s! "
<nul set /p "=!s!"
exit /b
:convertFiletimeToLocaltime
for /f "tokens=2 delims=-" %%i in ('w32tm /ntte %~1') do echo:%%i
exit /b