2012-10-04 32 views
0

我最近了解到,編譯爲32位時,Perl只支持4GB的內存,儘管內核支持並通過PAE使用更多內存。32位PHP受地址空間分配限制嗎?

PHP也會遭受這種情況嗎?做所有的編程語言?

來源:http://linux.die.net/man/1/perlsolaris 驗證:浪費了一半的時間。

+0

要解決您的內存尋址問題,您可以使用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

回答

4

這已經Memory limit to a 32-bit process running on a 64-bit Linux OS

最多的回答還有的簡短報價更普遍地回答:

32位進程只能訪問4GB的虛擬內存 ,而不管操作系統如何。這是由於該過程只能對映射32位的內存地址進行映射。如果你進行數學計算,你會發現32位地址只能訪問最大4GB,即使你在128位操作系統上運行 也是如此。

1

是的,所有的32位語言都有一個32位的地址空間,(它的32位)限制了4GB的內存訪問。 (甚至有點bios和其他的東西)

我不明白這可能是一個問題,當然不是用PHP。如果這是一個問題,只需在64位操作系統上運行即可。 Linux,Windows,Mac,做出您的選擇。

+0

當您需要在遺留系統上的一次運行中導出20G以上的數據時,這個問題就會發揮作用,您只能處理遺留系統。放在上下文中,我將數據從Debian Sarge i386轉移到更現代的操作系統,並且必須導出用於導入到新操作系統的內容。 – Spechal

+0

把內存中的20GB保存起來不是很聰明,我沒有看到問題。 – JvdBerg

+0

雖然我不反對,但劇本可以做到。它已經超過10年了,早在我處理這些系統之前。問題就在於所有的語言都受到這種困擾。 – Spechal

相關問題