2017年3月21日火曜日

メモリ解放のタイミングと解放量のデータ

プログラムで使用するメモリはその他のプログラムなどと共有していて、そのメモリを管理するシステムが状況に応じて色々と処理するので、自身のメモリ使用量を確認するプログラムを作成しても結果がいつも同じということはなく、バラつきがあります。

複数の条件の試験結果を比較したい場合はそのバラツキも考慮しなければいけませんので、どの程度ばらつくのか確認しました。
その過程でHTAでのメモリ解放のタイミングと解放される量が少し分かりましたので試験データと併せて記録・公開します。

試験用ソース



試験後の画面


以下は試験=function(){}にして実行した結果。





グラフ




以下は試験=function(){}にして実行した結果。




試験用ソースを見てお分かりになるかもしれませんが、メモリ使用量を取得するタイミングやinnerText = ''を実行するタイミングを変えて何度か試してみましたが、結果は同様でした。
setTimeoutによってfunctionを細切れに実行しても、予約済みfunctionがある場合はメモリ解放は先送りされるようです。一方で、実行中のfunctionがあっても周期的に少量の解放は行われるようです。
大規模な解放はビジー状態が解除されてから1秒以内ぐらいに実行されるようです。

0 件のコメント:

コメントを投稿