powered by simpleCommunicator - 2.0.46     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Утечка памяти
3 сообщений из 3, страница 1 из 1
Утечка памяти
    #38164819
kanchelskiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые гуру WCF, добрый день, проблема - утечка памяти.
NetTcpBinding, singleton
Проверял профайлером, после закрытия сессии, объекты приложения уничтожаются, но в памяти остается куча объектов стрингов, байтов и тд., и так после каждой сессии.
трассировка показывает что все нормально закрывается

Код: xml
1.
2.
3.
4.
5.
Закрытие System.ServiceModel.Channels.ServiceChannel
Закрытие System.ServiceModel.Channels.ServerSessionPreambleConnectionReader+ServerFramingDuplexSessionChannel
System.ServiceModel.Channels.ServerSessionPreambleConnectionReader+ServerFramingDuplexSessionChannel/4032828 закрыт
Освобожден: System.ServiceModel.Channels.ServerSessionPreambleConnectionReader+ServerFramingDuplexSessionChannel
System.ServiceModel.Channels.ServiceChannel закрыт


при открытии
на клиенте создаю
Код: c#
1.
2.
3.
4.
5.
                EndpointAddress sessionAdr = server.Login(connName, login, password);
                NetTcpBinding tcpBinding = new NetTcpBinding(SecurityMode.None);
                chnlSession = new ChannelFactory<ISession>(tcpBinding, sessionAdr.ToEndpointAddress());

                 session = chnlSession.CreateChannel();



на сервере

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
            string host = Dns.GetHostName();
            IPHostEntry ip = Dns.GetHostEntry(host);
            
            String uri = String.Format("net.tcp://{1}:{0}/SessionBound", GetPort(), 
                                                                            host);

            ServiceHost serviceHost = new ServiceHost(session, new Uri(uri));
            
            NetTcpBinding tcpBinding = new NetTcpBinding(SecurityMode.None);
         
            System.ServiceModel.Description.ServiceEndpoint endPoint =
                    serviceHost.AddServiceEndpoint(typeof(ISession), tcpBinding, "");

            serviceHost.Open();
             
            ChannelFactory<ISession> channelFactory = new ChannelFactory<ISession>(
                                                        tcpBinding,
                                                        new EndpointAddress(uri));


            IClientChannel chnl = (IClientChannel)channelFactory.CreateChannel();
            
            EndpointAddress endpointAddress = EndpointAddress.FromEndpointAddress(chnl.RemoteAddress);

            sessions[session.GetSessionId()] = serviceHost;
         


при закрытии
на клиенте
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
               try
               {
                     Session.Close();
                    (Session as ICommunicationObject).Close();
                }
                catch (CommunicationException ExCom)
                {
                    MessageBox.Show(ExCom.Message,Application.ProductName,MessageBoxButtons.OK,MessageBoxIcon.Information  );
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message, Application.ProductName, MessageBoxButtons.OK);
                }


на сервере
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
     internal void RemoveSession(Session session)
        {
            lock (sessions)
            {
                String sessionID = session.GetSessionId();

                if (!sessions.ContainsKey(sessionID)) return;

                ServiceHost srvHost = sessions[sessionID];
                srvHost.BeginClose(OnBeginClosing, srvHost);
                
            }
        }

        void OnBeginClosing(IAsyncResult result)
        {
            ISession session = (ISession)(result.AsyncState as ServiceHost).SingletonInstance;
            String sessionID = session.GetSessionId();
            sessions.Remove(sessionID);
            GC.Collect();
        }



что не так? подскажите плз!!!
...
Рейтинг: 0 / 0
Утечка памяти
    #38165751
kanchelskiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробывал создать простой классический пример с калькулятором, тоже самое. те при закрытии клиета в памяти на сервре остаются следы.
...
Рейтинг: 0 / 0
Утечка памяти
    #38173656
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kanchelskiyПопробывал создать простой классический пример с калькулятором, тоже самое. те при закрытии клиета в памяти на сервре остаются следы.

сборщик мусора всё подберёт
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Утечка памяти
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]