WCFクライアントがあり、WindowsサービスでホストされているWCFサーバーに接続しています。サービスでは、セキュリティイベントログから最終日のエントリを読み取りました。次に、エントリを解析して独自のエントリを作成し、List<Data>
それをWCFクライアントに返してDataGridに表示します。問題は、セキュリティイベントログに30000のエントリがあり、すべてのエントリを解析した後、タイプが30000の新しいオブジェクトを作成することですData
。このタイプは、イベントログからのメッセージの詳細を含む15の文字列プロパティを持つクラスです。プロセス全体の後、Windowsサービスのメモリ使用量は60〜70MBになります。この大量のデータセットをクライアントに送信したら、Windowsサービスで使用されるメモリを70〜80MBからデフォルトの10MBに下げるにはどうすればよいですか?
これが私のコードです:
public List<Data> GetConnections()
{
var eventLog = new EventLog("Security");
var fromDate = DateTime.Now.AddDays(-1);
var entries = (from EventLogEntry e in eventLog.Entries
where (e.InstanceId == m_EventNumber) && e.TimeGenerated >= fromDate orderby e.TimeGenerated
select e).ToList()
.OrderByDescending(x => x.TimeGenerated);
var items = new List<Data>();
foreach(var item in entries)
{
var nData = ParseMessage(item.Message);
if (nData != null)
items.Add(ruleData);
}
return items;
}