我有一個x64應用程序。這是一個有點沉重的應用程序(在線程數,內存需求等方面)。我在4GB RAM 64位Windows7四核心機器上運行此應用程序。但我注意到,在我的應用程序需要大約2.2-2.3 GB的RAM之後,它纔會崩潰。這是否需要行爲?最大64bit應用程序最大隻能從4GB RAM獲取2.3-2.4 GB RAM?x64進程可以佔用多少內存4GB RAM
回答
不,請檢查您是否沒有任何溢出或其他錯誤。即使是32位應用程序也可以解決這個問題 - 使用更多的RAM,所以如果它在Windows 64位上受到限制,那將是荒謬的。
剩餘的內存是免費使用的,對吧?
調試你的程序。不應該因爲您分配大量內存而導致崩潰。通常的嫌疑犯:數學溢出,內存損壞,未能處理來自內存分配例程的錯誤。
如果沒有捕獲到所產生的異常,那麼分配失敗肯定會導致程序崩潰(這通常是這種情況,因爲這種情況下,你無法從in無論如何很多情況下,所以最多隻能緩存一下,顯示一些關於崩潰的信息(可能很難分配內存),然後退出)。 – Grizzly
RAM的數量是沒有關係的,一個進程分配虛擬內存。您可以在64位進程中分配的虛擬內存量僅受操作系統提供頁面以將虛擬內存映射到RAM的能力的限制。如果您沒有使用CreateFileMapping()創建您自己的映射,那麼通常僅受最大允許的頁面文件限制。這是一個系統設置,控制面板+系統+高級。 Windows版本有一個上限,Windows 7家庭高級版有16 GB,專業版以上爲192 GB。
RAM僅在您的程序實際訪問虛擬內存時使用。當內存尚未映射時,會產生頁面錯誤。如果您在使用所有可用頁面之前分配和使用內存的次數遠遠超過RAM的數量,則64位進程通常會由於這些頁面錯誤而變慢。
由於你在典型的最大分頁文件大小的南部,這肯定是另一個普通的舊堆損壞錯誤。
- 1. 減少Solaris上多個Java進程的內存佔用(UNIX)
- 2. 多少-XX:MaxPermSize大小我可以提及的4GB和8GB內存和計算?
- 3. 空值佔用多少內存?
- 4. DLR的內存佔用量是多少?
- 5. 一般NSPasteboard佔用多少內存?
- 6. Python Pickle佔用多少內存?
- 7. (iphone)UIImage佔用多少內存?
- 8. int [n] []佔用多少內存?
- 9. 黑莓上的應用程序可以分配多少內存
- 10. 減少應用程序內存佔用
- 11. 如何減少多進程PHP應用程序的內存佔用
- 12. 檢查在其他進程中可以讀取多少內存
- 13. 最好,更快,佔用更少內存的進程或線程?
- 14. 我可以分配多少內存?
- 15. 進程佔用了多少核心?
- 16. 每個Apache進程佔用多少?
- 17. 以下佔用多少存儲空間?
- 18. x64 Linux中的單進程最大可能內存
- 19. 32位進程如何使用近4GB內存?
- 20. Debian的 - 的所有進程都低內存佔用還沒有更多的可用RAM
- 21. 減少內存佔用
- 22. 以編程方式查找有多少RAM可用
- 23. 我可以在4GB RAM上使用Oracle JDeveloper 12C嗎?
- 24. 我的iPhone應用程序需要佔用多少內存?
- 25. Ruby on Rails應用程序應占用多少內存?
- 26. iPhone應用程序佔用多少內存iPhone 4
- 27. 我的程序可以訪問超過4GB的內存嗎?
- 28. 如何找出哪個進程佔用大部分內存和多少?
- 29. Rails 3進程的內存佔用量應該隨着時間增長多少?
- 30. 引用是否可以佔用內存?
在Windows上,32位進程實際上可以直接尋址2GB的內存(除非設置了IFLAA位) - 請參閱[MSDN上的內存限制](http://msdn.microsoft.com/zh-cn/庫/ aa366778%28VS.85%29.aspx) – Fiktik