0
我正在實現一個WCF服務客戶端,旨在測試幾種服務方法。這是通過使用由添加Web引用創建的標準生成代理類來完成的(繼承自System.Web.Services.Protocols.SoapHttpClientProtocol)。我需要做的是多次同時執行某些類型的請求,以查看它將如何影響服務器性能(如服務器基礎結構的容量測試)。 這裏的問題 - 每對這些請求的響應是相當大的(〜10-100 MB),我發現只有幾個電話一樣最小化WCF服務客戶端的內存使用情況
// parametersList.Count = 5
foreach(var param in parametersList)
{
var serviceResponse = serviceWebReferenceProxy.ExecuteMethod(param);
// serviceResponse is not saved anywhere else,
// expected to be GC'd after iteration
}
導致進程的專用字節跳轉到的內存〜500 MB和工作設置爲200-300 MB。我懷疑並行運行它們,如果需要迭代次數增加到100-200,肯定會導致StackOverflow/OutOfMemoryException異常。那麼如何做到這一點呢?我期待刪除分配服務方法對變量的響應將有所幫助,但這是一個問題,因爲我需要查看每個響應的大小。我在每次迭代之後都會尋找一些即時和有保證的內存清理。
我覺得你的陳述「根據需要肯定會導致......」是投機性的。在開發中進行堅實的測試是很容易的。您可以調用System.GC.GetTotalMemory(False)以獲得準確的內存消耗。 – lcryder
哦,在循環之外聲明serviceResponse。 – lcryder
已經做到了。關於測試 - 這裏是3個「客戶端」實例的截圖:http://piccy.info/view3/4887324/c523cf8d264d80ad314805621198f18d/ – Jaded