84669 orang belajar
152542 orang belajar
20005 orang belajar
5487 orang belajar
7821 orang belajar
359900 orang belajar
3350 orang belajar
180660 orang belajar
48569 orang belajar
18603 orang belajar
40936 orang belajar
1549 orang belajar
1183 orang belajar
32909 orang belajar
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; };
c
struct 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 MyStruct2 { void *m_p; int m_i; char m_c; };
这个struct在32位环境下同样是12字节,但在64位下是16字节。 这两个struct在内存中图像比较如下: 图片是windows下的比较,linux也是一样的,毕竟内存都是一样的。我说多50%是个平均的估计值,如果编译时不优化的话,多100%都有可能呢。
根据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. 还有,不再展开了。
举个例子,你就明白了:
这个struct在32位下是12字节,在64位下是24字节。
还有一个例子:
这个struct在32位环境下同样是12字节,但在64位下是16字节。
这两个struct在内存中图像比较如下:
图片是windows下的比较,linux也是一样的,毕竟内存都是一样的。我说多50%是个平均的估计值,如果编译时不优化的话,多100%都有可能呢。