Утечка памяти .NET Remoting? - PullRequest
       7

Утечка памяти .NET Remoting?

1 голос
/ 18 апреля 2010

У меня есть класс Remoting как синглтон

<configuration>
   <system.runtime.remoting>
      <application>
         <service>
            <wellknown 
               mode="Singleton" 
               type="PTSSLinkClasses.PTSSLinkClientDesktopRemotable, PTSSLinkClasses" 
               objectUri="PTSSLinkDesktop" />
         </service>
         <channels>
            <channel ref="http" port="8901"/>
         </channels>
      </application>
   </system.runtime.remoting>
</configuration>

Создано в рамках "серверной" службы. Другая клиентская служба использует этот удаленный объект. Клиент вызывает удаленный объект каждую 0,5 секунды, используя таймер (опрос) (для тестирования)

Если служба сервера остановлена, а удаленный объект недоступен, использование памяти для службы клиента продолжает расти ......

Я перезаписал InitialLifetimeService, чтобы вернуть ноль

public override Object InitializeLifetimeService()
        {
            return null;
        }

Если удаленный объект недоступен, делает ли .net очередь все запросы на вызов к этому объекту ??? пока вся память не расходуется? Как можно определить, что удаленный объект недоступен, и перестать пытаться вызвать удаленный метод?

1 Ответ

3 голосов
/ 18 апреля 2010

.NET Remoting не ставит в очередь вызовы удаленных объектов. Если удаленный объект больше недоступен и вы вызываете для него метод, вы должны получить исключение (WebException, RemotingException), что запрошенная служба не найдена.

Я думаю, что ваша проблема в другом. Возможно, вы игнорируете возможное Исключение в своем коде и неправильно его обрабатываете.

Используете ли вы тот же таймер снова для вызова удаленного объекта, или вы создаете каждые 0,5 секунды новый таймер для вызова удаленного объекта?

...