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

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%都有可能呢。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート