我有一个处理大量内存数据的应用程序。现在,有时会发生 2GB/app 的内存限制,我的程序挂起。任务管理器中的内存使用变得混乱(从 2GB 到 6GB 不断波动) 我想要的是当内存使用达到特定限制时,程序应该优雅地退出。我不想手动干预用户杀死应用程序。这可能吗?
问问题
1325 次
2 回答
6
您应该分配一个后台监视线程,该线程轮询 System.Diagnostics.Process.GetCurrentProcess().PrivateMemorySize64,然后根据返回的大小进行操作。
例如。
public class MonitoringThread : Thread{
...
bool working = true;
void run(){
while(working){
long size = Process.GetCurrentProcess().PrivateMemorySize64;
if (size > 2000000000){
//do anything
}
else {
try{
Thread.Sleep(1000);
}
catch{}
}
}
}
}
请注意,我只是在这个页面上写了这段代码,所以可能不太准确:)
于 2013-07-05T07:27:05.217 回答
2
Garbage Collection Notifications
当完整的垃圾收集完成时,您可以收到警报。
作为响应,您可以检查GC.GetTotalMemory()
当前使用了多少内存,如果它太高,则采取适当的措施。
于 2013-07-05T07:44:20.780 回答