我最近了解到,編譯爲32位時,Perl只支持4GB的內存,儘管內核支持並通過PAE使用更多內存。32位PHP受地址空間分配限制嗎?
PHP也會遭受這種情況嗎?做所有的編程語言?
來源:http://linux.die.net/man/1/perlsolaris 驗證:浪費了一半的時間。
我最近了解到,編譯爲32位時,Perl只支持4GB的內存,儘管內核支持並通過PAE使用更多內存。32位PHP受地址空間分配限制嗎?
PHP也會遭受這種情況嗎?做所有的編程語言?
來源:http://linux.die.net/man/1/perlsolaris 驗證:浪費了一半的時間。
這已經Memory limit to a 32-bit process running on a 64-bit Linux OS
最多的回答還有的簡短報價更普遍地回答:
32位進程只能訪問4GB的虛擬內存 ,而不管操作系統如何。這是由於該過程只能對映射32位的內存地址進行映射。如果你進行數學計算,你會發現32位地址只能訪問最大4GB,即使你在128位操作系統上運行 也是如此。
http://www.marco.org/2008/06/03/64-bit-php-overcomes-the-stupid-signed-integer-limit
這是一個,我覺得在谷歌上搜索1分鐘:)
謝謝,但這只是表明它可以爲整數保留更多空間,因此它可以使用更大的數字。 – Spechal
是的,所有的32位語言都有一個32位的地址空間,(它的32位)限制了4GB的內存訪問。 (甚至有點bios和其他的東西)
我不明白這可能是一個問題,當然不是用PHP。如果這是一個問題,只需在64位操作系統上運行即可。 Linux,Windows,Mac,做出您的選擇。
要解決您的內存尋址問題,您可以使用Tie :: File(http://perldoc.perl.org/Tie/File.html)或File :: Map(http:// search.cpan.org/~leont/File-Map-0.52/lib/File/Map.pm)。這些將允許您使用文件作爲Perl變量,因此您可以通過對代碼進行最少更改來更改存儲方法。當然,這是否會非常緩慢取決於腳本的設計和它的隨機訪問。 – dan1111