c# - 系统内存不足异常

标签 c# visual-studio-2010 sockets out-of-memory

我们正在使用 Visual Studio C# 2010 和 SQL SERVER 进行客户端服务器套接字编程。

该程序运行良好。但是过了一段时间它偶然发现了错误

"System out of memory exception"

这里我们使用一个socket包类
 public class SocketPacket
 {
        public SocketPacket(System.Net.Sockets.Socket socket, int clientNumber, string ClientIP)
        {
            m_currentSocket = socket;
            m_clientNumber = clientNumber;
            m_ClientIP = ClientIP;
        }
        public System.Net.Sockets.Socket m_currentSocket;
        public int m_clientNumber;
        public byte[] dataBuffer = new byte[10000000];
        public string m_ClientIP;
    }

我认为 dataBuffer 已满

如何释放数据缓冲区?

最佳答案

您的 SocketPacket类包含 System.Net.Sockets.Socket 类型的字段实现 IDisposible接口(interface),因此您应该手动处理您的类的实例。另外我建议你在 SocketPacket 中实现 IDisposible类(class)。

    public class SocketPacket: IDisposable
    {
        public SocketPacket(System.Net.Sockets.Socket socket, int clientNumber, string ClientIP)
        {
            m_currentSocket = socket;
            m_clientNumber = clientNumber;
            m_ClientIP = ClientIP;
        }
        public System.Net.Sockets.Socket m_currentSocket;
        public int m_clientNumber;
        public byte[] dataBuffer = new byte[10000000];
        public string m_ClientIP;
        public void Dispose()
        {
            m_currentSocket.Dispose();
        }
    }

关于c# - 系统内存不足异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11858085/

相关文章:

c# - Magento 1.4 产品标识符类型

python - 使用 PKCS#11 在 Python 中提供 SSL 连接

c# - 如何在 asp.net c# 中通过下拉列表获取最近 3 年的数据?

c# - 字符串数组到 Int 数组

c# - FFMPEG缓存如何配置和获取缓存文件名

visual-studio-2010 - Visual Studio 2010 中的设置是与解决方案一起存储还是与 IDE 一起存储?

c# - 我可以通过 C#/Visual Studio 中的预编译器指令检测网络连接吗?例如#if 连接到网络

visual-studio-2010 - 折叠 Visual Studio 中的所有非事件预处理器 block

php - TCP套接字连接是否适合连续套接字打开/关闭

c# - 索引和计数必须引用缓冲区内的位置。参数名称 : bytes