在向WCF发送soap请求后,对象在内存中保留多长时间?

时间:2011-10-05 18:20:28

标签: .net wcf garbage-collection

我想知道在soap请求(没有实现IDisposable)期间实例化的对象有多长时间留在内存中?

例如:

...
public GetRecordsResponse GetRecords(GetRecordsRequest request)
    {
        GetRecordsTransaction transaction = new GetRecordsTransaction();
        GetRecordsResponse response = transaction.GetResponse(request);
        return response;
    }
...

交易在内存中保留多长时间?

肥皂一发送回复?会话(如果在wcf中存在)?

2 个答案:

答案 0 :(得分:3)

实现IDisposable与托管内存几乎没有关系。垃圾收集是关于清理托管内存;但IDisposable旨在允许控制释放非托管资源。

从您的代码示例中,您无法保证对象在内存中的使用时间,并且您绝对不应该对垃圾收集器在这些对象恢复内存的时间(或后期)做出任何假设。不再被您的代码引用。

我可以问你为什么需要知道吗?听起来好像你期望你的事务在垃圾收集时有某种行为,当你真正想要的是显式回滚或提交它们时。如果你能解释你的根本问题,这可能有助于澄清问题。

答案 1 :(得分:2)

它们不是缓存的。它们可能不会被垃圾收集一段时间。