84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
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%都有可能呢。