由于虚拟内存不足的情况,线程无法启动 C#



今天我的客户端在运行我的应用程序时收到错误(如下(

错误::-2146233051:线程无法启动。 at System.Threading.Thread.StartInternal(IPrincipal principal, StackCrawlMark&stackMark( at System.Threading.Thread.Start((

=========

如您所见,它指出创建线程失败。用于创建线程的代码

//-state -> stateobject for receving socketdata
objState.m_strReceivedData = state.m_strReceivedData;
objState.m_strComputerName = state.m_strComputerName;
objThread = new Thread(new ParameterizedThreadStart(MethodName));
objThread.Start(objState);

根据错误,上面的代码中似乎发生了错误。此外,在事件查看器中,内存不足的警告指出我的 exe 使用了最多的虚拟内存。下面是我在事件查看器中收到的消息。

Windows 已成功诊断出虚拟内存不足的情况。以下程序消耗的虚拟内存最多:应用程序.exe (4272( 消耗32793702400

我认为内存泄漏正在发生,所以我应该强行调用 GC。收集(( 还是有其他选择..?

请指教!提前感谢您的帮助。:)

请遵循以下内容以减少内存消耗:

1.如果创建和使用对象并且您不需要它,则进一步将其设为空。

2.不要加载不必要的数据/不要尝试一次加载大量数据

喜欢 1.( 从文件中读取大量数据 2.( 从数据库中读取的大量数据

3.当你不在块中使用对象时,不要在块中提及它,所以GC很容易快速收集它。

4.例如,不要包含相同数据对象的副本

public class Student
{
string Name;
string ID;
}

如果为此创建了两个具有相同数据的对象

学生1 { 名称: 拉穆, 编号:40 }

并且您创建了另一个具有相同数据的对象 student2

Stuent2 { 名称: 拉穆, 编号:40 }

现在即使它是不同的对象,但它是重复的数据

哪个偏离路线占用内存

if student1=2mb
then student2=2mb
total 4mb for maintaining same data

最新更新