limu
小狐狸
小狐狸
  • UID34819
  • 注册日期2010-12-10
  • 最后登录2014-08-28
  • 发帖数5
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
阅读:4349回复:11

64位火狐在64位win7中最大可以使用内存(?)G

楼主#
更多 发布于:2013-02-08 10:35
64位火狐在64位win7中最大可以使用内存(?)G
asdf123456
千年狐狸
千年狐狸
  • UID32588
  • 注册日期2010-04-16
  • 最后登录2025-03-16
  • 发帖数1088
  • 经验299枚
  • 威望0点
  • 贡献值50点
  • 好评度10点
  • 社区居民
  • 忠实会员
1楼#
发布于:2013-02-08 10:35
有多少内存就用多少了
白左
千年狐狸
千年狐狸
  • UID34985
  • 注册日期2010-12-29
  • 最后登录2025-04-27
  • 发帖数2040
  • 经验656枚
  • 威望0点
  • 贡献值364点
  • 好评度69点
  • 社区居民
  • 忠实会员
2楼#
发布于:2013-02-08 10:35
pcxfirefox:这个得看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这样设计,是为了代码移植方便)
回到原帖



windows一向层次比较多……那么linux是什么样的?
-いたんですか? -ええ、ずっと
pcxfirefox
千年狐狸
千年狐狸
  • UID39042
  • 注册日期2012-06-22
  • 最后登录2018-01-15
  • 发帖数2539
  • 经验1263枚
  • 威望2点
  • 贡献值242点
  • 好评度133点
  • 最爱沙发
  • 忠实会员
  • 社区居民
3楼#
发布于:2013-02-08 10:35

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

恩,这样的话,malloc最大值就是Win64系统的限制了

当然不排除其他一些模块没有使用__int64
http://pcxfirefox.wordpress.com/
coolypf
狐狸大王
狐狸大王
  • UID31823
  • 注册日期2010-01-27
  • 最后登录2024-05-18
  • 发帖数361
  • 经验187枚
  • 威望1点
  • 贡献值50点
  • 好评度21点
  • 社区居民
  • 忠实会员
4楼#
发布于:2013-02-08 10:35
taglife
前面打個大?,後面又說個錯,
想必你已知道答案    
回到原帖

可用地址空间是 2^47 ,但是 Win 7 x64 最大只支持 192GB 物理内存。
另外 18446744073709551616 = 0x1999999999999999 ,不知道这么个莫名其妙的数字是怎么算出来的。。。  
coolypf
狐狸大王
狐狸大王
  • UID31823
  • 注册日期2010-01-27
  • 最后登录2024-05-18
  • 发帖数361
  • 经验187枚
  • 威望1点
  • 贡献值50点
  • 好评度21点
  • 社区居民
  • 忠实会员
5楼#
发布于:2013-02-08 10:35
pcxfirefox:这个得看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这样设计,是为了代码移植方便)
回到原帖


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
taglife
千年狐狸
千年狐狸
  • UID38488
  • 注册日期2012-03-20
  • 最后登录2013-04-02
  • 发帖数2052
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度1点
6楼#
发布于:2013-02-08 10:35
limu
回到原帖

前面打個大?,後面又說個錯,
想必你已知道答案    
Firefox 開啟安全模式,停用個人設定、佈景主題及擴充套件(無附加元件)測試:
說明 > 重新啟動但停用附加元件(Firefox 4+)
Firefox Profile: 說明 > 疑難排解資訊 > 開啟資料夾
排版引擎:Firefox(Gecko), Opera(Presto), Google Chrome(WebKit),
Safari(WebKit), Internet Explorer(Trident), Konqueror(KHTML)
pcxfirefox
千年狐狸
千年狐狸
  • UID39042
  • 注册日期2012-06-22
  • 最后登录2018-01-15
  • 发帖数2539
  • 经验1263枚
  • 威望2点
  • 贡献值242点
  • 好评度133点
  • 最爱沙发
  • 忠实会员
  • 社区居民
7楼#
发布于: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这样设计,是为了代码移植方便)
http://pcxfirefox.wordpress.com/
limu
小狐狸
小狐狸
  • UID34819
  • 注册日期2010-12-10
  • 最后登录2014-08-28
  • 发帖数5
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
8楼#
发布于:2013-02-08 10:35
viewtheard:理论最大可用,18446744073709551616 bit=17179869184 GB回到原帖

viewtheard
千年狐狸
千年狐狸
  • UID2383
  • 注册日期2005-01-20
  • 最后登录2025-08-08
  • 发帖数2123
  • 经验639枚
  • 威望1点
  • 贡献值520点
  • 好评度27点
  • 社区居民
  • 最爱沙发
  • 忠实会员
9楼#
发布于:2013-02-08 10:35
理论最大可用,18446744073709551616 bit=17179869184 GB
My Technical Blog: http://art-technical.blogspot.com/
limu
小狐狸
小狐狸
  • UID34819
  • 注册日期2010-12-10
  • 最后登录2014-08-28
  • 发帖数5
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
10楼#
发布于:2013-02-08 10:35
fang5566:理论上和win7一样,但实际上没人测试过。回到原帖

有测试方法提供么
fang5566
管理员
管理员
  • UID3719
  • 注册日期2005-03-07
  • 最后登录2025-08-08
  • 发帖数18502
  • 经验4858枚
  • 威望5点
  • 贡献值4324点
  • 好评度1118点
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 终身成就
11楼#
发布于:2013-02-08 10:35
理论上和win7一样,但实际上没人测试过。
Firefox More than meets your experience
游客

返回顶部