ゆるゆるエンジニアの技術メモ

神奈川在住のITエンジニアの忘備録です。主にプログラミング(Perl, Java など)やネットワーク技術について、学んだことを自分の中で整理するために書いています。書いたことが誰かのご参考になれば幸いです。

定期的にメモリ量を取得する。

引数で指定されたPIDを持つプロセスのメモリ量を定期的に出力するbatファイルを作成した。

getMem.bat

@echo off

set pid=%1

:loop
    set /p=%date% %time% <nul,
    tasklist /fo csv /fi "pid eq %pid%" /nh
    timeout 60 > nul
 
goto :loop

メモリ量を取得したいプロセスのPIDを引数にして、例えば、

getMem.bat 9928

と実行すると、以下のように60秒間隔で対象プロセスのメモリ量を取得する。(メモリ値は最後のカラム)

2018/09/17 19:14:51.17 ,"chrome.exe","9928","Console","1","198,056 K"
2018/09/17 19:15:51.16 ,"chrome.exe","9928","Console","1","198,864 K"
2018/09/17 19:16:51.15 ,"chrome.exe","9928","Console","1","198,452 K"
2018/09/17 19:17:03.80 ,"chrome.exe","9928","Console","1","198,784 K"
・・・

上記ようにcsv 形式で出力しているので、これをエクセルで開けばグラフが簡単に描ける。メモリリークの調査などに使用すると便利だと思う。