サーバー上で非常に長い間 (数か月) 実行される .NET C# Windows サービスをコーディングしました。
昨日確認したところ、600MBのメモリを使用していることがわかりました。サービスを再起動したところ、現在 60MB の RAM を使用しています。
なぜそんなに多くのメモリを使用しているのかを調べ始めました。 次の関数はメモリ リークを引き起こしますか?
StreamReader の .Close() が欠落していると思います。
テストとして、次の関数をループで 1000 回実行しましたが、メモリが増加することはありませんでした。
private static string GetTemplate(string queryparams)
{
WebRequest request = HttpWebRequest.Create(uri);
request.Method = WebRequestMethods.Http.Get;
WebResponse response = request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string tmp = reader.ReadToEnd();
response.Close();
}