C# (.NET) で記述された Windows サービスを使用して、さまざまな Windows システム設定/情報を監視および収集するエージェントを作成しています。メイン サービスは、起動時に構成ファイルから読み取り、実行する必要があるすべてのテストをリストに格納します。次に、タイマーが適切な頻度で個々のメソッドを実行します。サービス、レジストリキー、システム情報の取得などをチェックするための個々のクラスを含むクラス ライブラリを作成しました。メイン サービスのメソッドは、データをファイルに書き込んでメイン サーバーにアップロードする前に、クラス ライブラリのメソッドを使用して情報を取得します。 . クラスのほとんどのメソッドは静的です (ただし、そうでないものもあります)。これらのメソッドが 1 日を通して設定された頻度で繰り返し呼び出されることを念頭に置いて、それらを静的にすることは良い考えでも悪い考えでもあります。メモリ使用量は安定していますが、25 ~ 30MB と予想よりも少し高くなっています。私がこれを行った方法に大きな欠陥があると誰かが見ることができますか?
私の WriteToFile メソッドと WriteToLog メソッドはどちらも static void であり、呼び出されたときに StreamWriter を作成および破棄します。それが理にかなっているのか、それとも別の方法で行うべきなのか (サービスの開始時に StreamWriter を 1 つ作成し、代わりにそれを WriteTo メソッドに渡すなど) を考えました。
他に理解できないのは、テキスト ファイルから実行するチェックのリストをロードすることです。テキスト ファイルのサイズはわずか 3 KB ですが、テキスト ファイルが空白だった場合と比べて 7 MB 余分にメモリが必要です。