我有一個處理大量請求(每秒數千次)的WCF服務。每個請求都包含對象,因此它們在反序列化期間內置於DataContractSerializer內部。我的服務處理消息,並由.net垃圾回收器清理。wcf反序列化無內存分配
的問題是,垃圾收集正在給我的服務問題(請求偶爾服用超過100毫秒比他們應該更長)。我需要儘量減少它們。所以我正在尋找一種使用對象池的方式。換句話說,我希望數據協定序列化程序從我的對象池中獲取一個對象(而不是通過GetUninitializedObject獲取一個對象),然後當我完成處理該消息時,我會將其釋放回池以供清洗&重用,從而避免每秒數千次的內存分配。
我已經看到了這是可能的protobuf網(Using protobuf-net, is it possible to deserialize a message without allocating memory?),事實上我使用protobuf的其他地方,但對於這種特殊的情況,是不是一種選擇
你在尋找的不是一個對象池,而是一個緩存。 – DarthVader 2012-08-10 16:23:09