linux 32和64 在2g内存运行中有什么影响
巴扎黑
巴扎黑 2017-04-17 13:23:45
0
1
676

linux 32和64 在2g内存运行中有什么影响

巴扎黑
巴扎黑

全部回覆(1)
左手右手慢动作

根據Linux的記憶體管理機制,64位元的系統要比32位元的系統多佔用50%的內存,2G RAM的前提下,其他沒有任何區別,所以,在此前提條件下,最好安裝32位元系統,這樣可以空出更多的內存,以免過早使用swap分區造成大量i/o操作降低效能。

64位元的程式永遠比32位元的程式要多佔內存,原因如下:
1. 64位元的指標需要分配更多的記憶體空間(剛好是一倍,這個是硬性的)
2. 64位元環境下struct在記憶體中對齊(alignment)需要更多空間,最壞的margin正好比32位元多100%的記憶體(見下例1),當然不多見,現在的編譯器和CPU指令已經優化的不錯了。
3. 64位元的堆疊比32位元的堆疊需要更多的空間
4. 還有,不再展開了。

舉個例子,你就明白了:

cstruct MyStruct1
{
   char m_c;
   void *m_p;
   int m_i;
};

這個struct在32位元下是12位元組,在64位元下是24位元組。
還有一個例子:

cstruct MyStruct2
{
   void *m_p;
   int m_i;
   char m_c;
};

這個struct在32位元環境下同樣是12位元組,但在64位元下是16位元組。
這兩個struct在記憶體中影像比較如下:

圖片是windows下的比較,linux也是一樣的,畢竟記憶體都是一樣的。我說多50%是個平均的估計值,如果編譯時不優化的話,多100%都有可能。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!