進入開發工具(模擬器工具)不斷拋出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