完成使用該變量後,我可以在GC執行前儘早清理內存嗎?如何在c中儘早清除內存#
1
A
回答
9
如果需要立即發佈特定資源,請實現IDisposable
接口,並在某些對象(如流)上調用Dispose()
(有時爲Close()
)。
如果您希望防止密碼超出其使用期限保留在內存中,SecureString
支持此操作,儘管使用起來並不簡單。
否則,您無法控制垃圾收集器運行的時間或實際執行的操作。如果你迫切需要這種控制,你需要一個低級語言。
2
將其值設置爲null。如果找不到其他對該對象的引用,則GC將收集它(在下次GC運行期間)。但是你不能自己清除內存(非託管資源除外)。
1
您可以強制系統通過調用GC.Collect();
如果對象仍然引用它們不會被收集但是做一個掃描和評估所有對象,並考慮他們的收藏。
1
您可以將變量設置爲null
和運行GC.Collect()
http://msdn.microsoft.com/de-de/library/system.gc.collect(v=vs.80).aspx
3
正如@Hinek說,你應該叫GC.Collect()
。但是,如果您希望立即清除內存,它本身不會執行該部分。你應該叫:
//Force garbage collection.
GC.Collect();
// Wait for all finalizers to complete before continuing.
GC.WaitForPendingFinalizers();
0
您可以使用此方法:使用此方法
public static void FlushMemory()
{
Process prs = Process.GetCurrentProcess();
try
{
prs.MinWorkingSet = (IntPtr)(300000);
}
catch (Exception exception)
{
throw new Exception();
}
}
三路。
1 - 處置管理對象後,如類,....
2 - 創建與這種2000和間隔定時器。
3 - 創建線程來調用此方法。
我建議你在線程或計時器中使用這個方法。
0
正如@Mayank說使用這兩種
GC.Collect();
GC.WaitForPendingFinalizers();
由於該方案將不會繼續提高內存的使用,直到自由以前使用的內存。
相關問題
- 1. 如何清除C中的內存?
- 2. Session.Remove()在c#中清除內存?
- 3. 如何儘早刪除函數參數?
- 4. 如何清除內存流
- 5. 在Chrome中清除內存?
- 6. 如何清除C中的內存內容?
- 7. 如何在c中清除Groupbox後釋放內存#
- 8. C++共享內存泄漏,如何清除共享內存?
- 9. 如何在Golang Walk中儘早終止?
- 10. 清除C++中的內存問題
- 11. 如何清除Javascript中的內存?
- 12. 如何在C中儘早結束循環?
- 13. 在iPhone中清除內存中的可清除頁面
- 14. 清除CLR內存
- 15. 清除堆內存
- 16. OpenCV - 清除內存
- 17. VMWare內存清除
- 18. C++清除的內存仍可訪問
- 19. 清除緩存?在c#mvc
- 20. 如何在c中儘可能快地填充內存#
- 21. 如何清除Python/matplotlib內存?
- 22. 如何清除堆內存的日食
- 23. 如何清除動態內存?
- 24. 如何清除鍵盤內存?
- 25. actionscript 3.0如何清除內存
- 26. 如何清除內存,以防止java.lang.OutOfMemoryError
- 27. PHP刷新時如何清除內存
- 28. 如何實時清除位圖內存?
- 29. GMSMapView清除不清除內存
- 30. 如何清除在Objective-C
是否要覆蓋內存內容,或者希望GC收集變量引用的對象? – 2011-02-09 09:34:27
「清楚」是什麼意思?你的意思是「將內存內容清零以防止其他人在完成它之後讀取它」,或者你的意思是「釋放內存以便其可用於其他目的和隨後的內存分配」? – 2011-02-09 09:43:32
幾乎沒有*有理由這樣做。你能解釋一下爲什麼你認爲你需要在GC之前清理內存? – 2011-02-09 10:12:47