当前位置:编程学习 > C#/ASP.NET >>

关于WCF返回大数据时内存不会回收的问题。

我的WCF寄宿在一个windows服务中,客户端是一个应用程序。我发现WCF服务接口函数返回一个大数据的时候,服务端内存存在不会被回收的情况。

服务端:

   [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession, ConcurrencyMode = ConcurrencyMode.Single)]
    public  class AlarmCenterDatabaseService : IAlarmCenterDatabaseService
    { 
......
        public byte[] test()
        {
            byte[] bs = new byte[1024 * 1024 * 100];
            return bs;
        }
......
    }

客户端:
        private void GWButton_Click(object sender, RoutedEventArgs e)
        {
            byte[] bs;
            bs = AlarmCenter.DataCenter.DataCenter.db_proxy.test();
        }

客户端和服务端采用管道或者TCP/IP方式连接:

 if (csIP == General.GetHostIP())
                    db_cf = new ChannelFactory<IAlarmCenterDatabaseService>(PipBind, "net.pipe://localhost/AlarmCenterWcfServiceLibrary/AlarmCenterDatabaseService/");
                else
                    db_cf = new ChannelFactory<IAlarmCenterDatabaseService>(bind, "net.tcp://" + csIP + "/AlarmCenterWcfServiceLibrary/AlarmCenterDatabaseService/");

问题:每调用一次test(),内存都会增加一点,增加到一定程度,内存基本上处于一个平衡的波动,不会一直增长。当我把客户端关闭掉,内存会降低一点,但还是回比调用test()前要大很多,而且不会回收。 --------------------编程问答-------------------- --------------------编程问答-------------------- 调用GC.Collect()看看, --------------------编程问答-------------------- 写一个方法调用GC.Collect(),
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,