Как долго объекты остаются в памяти после запроса мыла к WCF? - PullRequest
0 голосов
/ 05 октября 2011

Мне было интересно, как долго объекты, созданные во время запроса мыла (которые не реализуют IDisposable), остаются в памяти?

, например:

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

Как долго будеттранзакция останется в памяти?

Как только мыло отправит ответ?сессия (если она существует в wcf)?

Ответы [ 2 ]

3 голосов
/ 05 октября 2011

Реализация IDisposable имеет мало общего с управляемой памятью. Сборка мусора - это очистка управляемой памяти; но IDisposable предназначен для управления освобождением неуправляемых ресурсов.

Из вашего примера кода у вас нет гарантии того, как долго ваши объекты находятся в памяти, и вам определенно не следует делать какие-либо предположения о том, как скоро (или поздно) сборщик мусора восстановит память для этих объектов, как только они будут больше не ссылается на ваш код.

Могу я спросить, зачем тебе это знать? Звучит так, как будто вы ожидаете, что ваши транзакции будут иметь какое-то поведение в момент сборки мусора, когда вам действительно нужно явно откатить или зафиксировать их. Если бы вы могли объяснить вашу корневую проблему, это могло бы помочь прояснить вопрос.

2 голосов
/ 05 октября 2011

Они не кэшируются. Возможно, они какое-то время не собирают мусор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...