进入开发工具(模拟器工具)不断抛出OutofMemoryException的问题,我知道它不是我的应用程序,因为无论运行什么项目,都会发生。清除CLR内存
我到目前为止唯一的解决方法是重新启动我的电脑,是否有办法刷新/清除CLR运行时,所以我不必每次都重新启动我的电脑?
进入开发工具(模拟器工具)不断抛出OutofMemoryException的问题,我知道它不是我的应用程序,因为无论运行什么项目,都会发生。清除CLR内存
我到目前为止唯一的解决方法是重新启动我的电脑,是否有办法刷新/清除CLR运行时,所以我不必每次都重新启动我的电脑?
OutOfMemoryException并不一定表示运行时有问题。任何时候系统耗尽内存,无论消耗什么,都可能发生。
看看任务管理器中的进程列表,看看哪些内存消耗最多。
每个运行托管代码的进程都会启动一个单独的CLR运行时副本 - 并且当任何类型的进程终止时,它所消耗的内存将被回收到通用池中。
没有什么共享“冲洗”或“清除”。
有没有可能您的模拟器工具没有“一路崩溃” - 该过程在故障状态中四处徘徊?
可能,但我看不到任何目前看起来可疑的进程。我真的不知道:( – Mark 2009-11-26 02:59:34
听起来像这是第三方工具。所以我会向他们提交一个bug请求。
但正如其他人所说,问题将包含在操作系统进程中。使用任务管理器,您应该能够识别违规流程并杀死它。这将回收内存并擦干净。您将不得不重新开始仿真。
如果这个问题阻止你完成你的模拟,那么我会提交一个紧急的(但不是生气的)错误请求。
Windows上的x86/32位用户模式进程仅具有2GB的可寻址虚拟内存空间。一个x64/64位进程具有16TB的可寻址虚拟内存。你没有说你的进程是32位还是64位 - 但我会假设32位。一旦32位进程开始冒险进入虚拟或承诺内存的1.5+ GB区域,则您正在玩火,在应用程序崩溃之前,这只是一个时间问题。由于每个应用程序都不同,因此它会在崩溃时崩溃。
那么让我们来谈谈可寻址空间的“2GB”......您的应用程序使用的内存无法访问所有2GB内存。还有就是额外消耗大量片的CLR需要运行的应用程序:
所以,你可以拥有的内存演出系统上可用,但应用程序可以很容易崩溃,如果它是x86和接近上述限制。
我已经在StackOverflow上发布了很多有关CLR内存的答案和信息,这些内容描述了很多工作原理。寻找我的名字并查看一些其他答案。这可能有助于清理一些事情。
HTH
林在我束手无策这里...我必须弄清楚到底是怎么发生的事情,我无法承受不断重新启动我的电脑 – Mark 2009-11-26 02:50:06
我可以以某种方式增加我的CLR内存? – Mark 2009-11-26 03:25:28