今天我的客户端在运行我的应用程序时收到错误(如下(
错误::-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