Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net Socket构造函数是分配更多内存列表的函数中最重要的一个,为什么?_.net_Sockets_Memory_Profiling - Fatal编程技术网

.net Socket构造函数是分配更多内存列表的函数中最重要的一个,为什么?

.net Socket构造函数是分配更多内存列表的函数中最重要的一个,为什么?,.net,sockets,memory,profiling,.net,Sockets,Memory,Profiling,我正在开发一个.NET框架来开发点对点应用程序。在上一个版本中,我使用APM模式(BeginXXX/EndXXX)实现了这一点,它工作得非常好。我的意思是,我用VS profiler进行了测量,结果是预期的,没有意外 目前我正在更新它,以使用.NET3.5中引入的高性能改进,它是XXXAsync。该框架工作正常,但是,当我看到分析器的结果(关于内存使用)时,套接字构造函数是“分配最多内存的函数”中排名第一的 只是一个旁白:我希望第二个,connectioniactor,会是最上面的一个,因为它创

我正在开发一个.NET框架来开发点对点应用程序。在上一个版本中,我使用APM模式(BeginXXX/EndXXX)实现了这一点,它工作得非常好。我的意思是,我用VS profiler进行了测量,结果是预期的,没有意外

目前我正在更新它,以使用.NET3.5中引入的高性能改进,它是XXXAsync。该框架工作正常,但是,当我看到分析器的结果(关于内存使用)时,套接字构造函数是“分配最多内存的函数”中排名第一的


只是一个旁白:我希望第二个,connectioniactor,会是最上面的一个,因为它创建了一个新的字节[1内存分配是由System.Net.Socket构造函数使用的System.Net.Logging造成的。禁用System.Net Logging可能会有所帮助。我不必担心。

你能计算出创建了多少个Socket对象吗?这将是我的下一步。第二:事实上,我有一个性能计数器,它每分钟递增一次me接受新连接(即使是冗余计数器-系统已提供)好的,这看起来非常奇怪。你能用一个简短但完整的程序来复制这个吗?我必须这样做,我知道。我会做的,然后带着它回来。我希望能复制它。它实际分配了多少字节?它可能是一个高百分比,但在总体方案中仍然不是那么多。。
using System.Net;
using System.Net.Sockets;

namespace SocketMemeoryTest
{
    class Listener
    {
        static void Main()
        {
            var forComparison = new byte[100*1024];
            new Listener(3453).Start();
        }

        private readonly IPEndPoint _endpoint;
        private readonly Socket _listener;

        public Listener(int port)
        {
            _endpoint = new IPEndPoint(IPAddress.Any, port);
            _listener = new Socket(_endpoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
        }

        public void Start()
        {
            _listener.SetIPProtectionLevel(IPProtectionLevel.Unrestricted);
            _listener.Bind(_endpoint);
            _listener.Listen(4);
            var saea = new SocketAsyncEventArgs();
            var async = _listener.AcceptAsync(saea);
        }
    }
}