linux 2g内存 64系统怎么样,linux 32和64 在2g内存运行中有什么影响

根据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在内存中图像比较如下:

bVmAc7

图片是windows下的比较,linux也是一样的,毕竟内存都是一样的。我说多50%是个平均的估计值,如果编译时不优化的话,多100%都有可能呢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值