簡體   English   中英

如果其他程序在64位Windows中使用過多,是否確實32bit程序將內存不足?

[英]Is it true that 32Bit program will be out of memory, if other programs use too much, in 64bit windows?

我正在開發32位應用程序,但出現內存不足錯誤。

而且我注意到我的Visual Studio和一個插件(其他應用程序也)使用了太多的內存,大約4或5 GB。

因此,我懷疑這些程序會耗盡我的程序能夠找到可用內存的所有內存地址。

我想32位只能使用前4 GB,而其他內存則根本不能使用。

我不知道我是否正確,否則我會尋找其他答案,例如我的代碼中有錯誤。

您的聲明

我想32bit只能使用前4 GB字節,否則根本就不能使用。

肯定是不正確的。 在64位操作系統中,由於虛擬內存到物理內存的轉換表為64位,因此所有應用程序都可以使用所有內存,而不管其位數是多少。

某些真正古老的硬件可能不允許DMA尋址超過4GB的地址,但我真的希望現在大部分都在垃圾場中。

如果整個系統的內存不足,它將或多或少地同等地影響所有應用程序。

但是,默認情況下,32位應用程序只能使用虛擬地址范圍的較低2GB(盡管如上所述,這2GB可以放置在物理內存中的任何位置,如上所述,借助64位轉換表)。 您可以通過在鏈接命令中使用/LARGEADDRESSAWARE將其擴展到將近4GB(在32位操作系統中為3GB,在這種情況下受/ 3GB引導標志的影響)-這只是告訴操作系統您的應用程序將“理解”地址可以是負數,因此可以在2GB以上的地址上正常運行。

任何系統都可能因太重的負載而癱瘓。

但是在Windows和任何其他虛擬內存OS的正常使用中,其他程序的內存消耗不會對任何給定的程序執行產生太大影響。

出現內存不足錯誤是不常見的,但是如果您進行了較大的分配或聲明了較大的局部自動變量,則可能會發生此錯誤。 如果您無法正確地釋放不再使用的內存,即程序泄漏內存,也會發生這種情況。 對於64位計算機上的32位程序,不是內存本身已用完,而是程序中的可用地址空間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM