阅读:4349回复:11
64位火狐在64位win7中最大可以使用内存(?)G
64位火狐在64位win7中最大可以使用内存(?)G
|
|
1楼#
发布于:2013-02-08 10:35
理论上和win7一样,但实际上没人测试过。
|
|
|
2楼#
发布于:2013-02-08 10:35
|
|
3楼#
发布于:2013-02-08 10:35
理论最大可用,18446744073709551616 bit=17179869184 GB
|
|
|
4楼#
发布于:2013-02-08 10:35
viewtheard:理论最大可用,18446744073709551616 bit=17179869184 GB回到原帖 错 |
|
5楼#
发布于:2013-02-08 10:35
这个得看Firefox的malloc模块是怎么分配内存的
据我所知,他的malloc里面都是使用size_t的,所以如果他没重定义的话,应该是unsigned long类型 Win64使用LLP64架构,那么对于long来说,指针扩展到64位,但是数据使用32位,所以unsigned long是32位 当然,如果他在x64编译时把size_t重定义成_int64等类型,就可绕过这个限制。 这也是为什么我先前说,Firefox的x64编译现在没有一个编译者能够很好的为x64修正源码,只是把Firefox源码使用x64编译器重新编译而已。即使malloc这个地方重定义成了_int64,那么还有其他的模块有可能没考虑到x64的特殊性,所以实际使用时可能内存占用到4G就有可能崩溃了(malloc如果为_int64,那么可能会在其他未修正的地方出现问题,崩溃内存可以高于4G) 当然,考虑到Windows 64位系统的实现,不可能应用到x64极限内存。比如Win2003 x64标准版最高只能访问到32GB,其他系统的限制要查MSDN或者咨询微软。 Linux下完全不一样,才是真正的x64操作系统。(Windows这样设计,是为了代码移植方便) |
|
|
6楼#
发布于:2013-02-08 10:35
|
|
|
7楼#
发布于:2013-02-08 10:35
pcxfirefox:这个得看Firefox的malloc模块是怎么分配内存的 size_t 在 Win64 下显然不会定义为 unsigned long 。 #ifndef _SIZE_T_DEFINED #ifdef _WIN64 typedef unsigned __int64 size_t; #else typedef _W64 unsigned int size_t; #endif #define _SIZE_T_DEFINED #endif |
|
8楼#
发布于:2013-02-08 10:35
|
|
9楼#
发布于:2013-02-08 10:35
恩,这样的话,malloc最大值就是Win64系统的限制了 当然不排除其他一些模块没有使用__int64 |
|
|
10楼#
发布于:2013-02-08 10:35
pcxfirefox:这个得看Firefox的malloc模块是怎么分配内存的 windows一向层次比较多……那么linux是什么样的? |
|
|
11楼#
发布于:2013-02-08 10:35
有多少内存就用多少了
|
|