2016-03-04 55 views
-1

最新的jsonServiceClient(4.0.54)在每個同步GET請求(以及可能的POSTS)後都會打開句柄。jsonServiceClient中的內存(句柄)泄漏

我的猜測是,它就像身體的流一樣,如果未讀,仍然保持打開狀態,並慢慢地磨我們的測試停下來。假設它是我們自己的代碼,我們在浪費一整天后沒有進一步追蹤它:/

儘管處理客戶端,但運行10000次提取循環會顯着降低我們的測試。

這不會發生異步獲取。

+0

這實際上不是一個問題。這是一個錯誤報告。我建議在這裏張貼https://forums.servicestack.net/或聯繫[email protected] – Scott

+0

服務客戶端[處理RequestStream](https://github.com/ServiceStack/ServiceStack/blob/ 8f527da7a669a60cca14e9b4bccd5a4da634ed62/src/ServiceStack.Client/ServiceClientBase.cs#L755)在每次請求後,如果你有一個repro請把它提交給[ServiceStack Issues](https://github.com/ServiceStack/Issues)。 – mythz

+0

注意:如果你的[客戶訪問原始響應](https://github.com/ServiceStack/ServiceStack/wiki/C%23-client#accessing-client-raw-responses),你需要處理'一旦你完成了使用,你可以在呼叫地點使用Stream或HttpWebResponse。 – mythz

回答

3

此問題在ServiceStack Customer Forums thread中標識爲未處理HttpWebResponse響應。這個問題可以通過在using{}聲明中調用它來解決,例如:

using (HttpWebResponse webRes = client.Get(requestUri)) { 
    byte[] bytes webRes.GetResponseStream().ReadFully(); 
    string str = bytes.FromUtf8Bytes(); 
}