我有一个处理大量内存数据的应用程序。现在,有时发生的情况是达到2 2GB/应用程序的内存限制,并且我的程序挂起。任务管理器中的内存使用变得混乱(从2 6GB到6 6GB不断波动)我想要的是,当内存使用达到一个特定的限制时,程序应该优雅地退出。我不希望用户手动干预杀死应用程序。这个是可能的吗?
发布于 2013-07-05 15:27:05
您应该分配一个后台监控线程,它会轮询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-05 15:44:21
您可以使用Garbage Collection Notifications在完整的垃圾收集完成时发出警报。
对此,您可以检查GC.GetTotalMemory()以查看当前使用了多少内存,如果太高,则采取适当的操作。
https://stackoverflow.com/questions/17483285
复制相似问题