在32位windos server 2003上让进程突破2G内存的限制
2013-09-04 15:58
330 查看
公司有台32位的win server 2003服务器,但开发的程序在峰值情况下确实超过2G内存的占用(已在其它64位机器上测试过)。程序在win server 2003机器上跑总会出现CMemoryException后僵死。为此查阅了一些资料,目前看来最有用的信息是:
http://support.microsoft.com/kb/823440/zh-cn (在基于 Windows Server 2003 的系统上的 Exchange Server 2003 中使用 /3GB 开关)
按照文章中的描述,修改了boot.ini后,为使程序能使用更多内存,还需要修改程序的链接选项:
配置属性-链接器-系统-启用大地址
当没有设置大地址时,运行程序最后输出是:
201, 2010M
当设置大地址后,运行程序最后输出是:
298, 2980M
OK,确实看到效果了!
http://support.microsoft.com/kb/823440/zh-cn (在基于 Windows Server 2003 的系统上的 Exchange Server 2003 中使用 /3GB 开关)
按照文章中的描述,修改了boot.ini后,为使程序能使用更多内存,还需要修改程序的链接选项:
配置属性-链接器-系统-启用大地址
// Win32MemUsage.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <malloc.h> #include <stdio.h> int test_mem_use() { size_t block_size = 1024 * 1024 *10; //10M int i = 0; int total = 0; while (1) { void * p = malloc (block_size); if (!p) break; ++i; total += 10; printf ("%d, %dM\n", i, total); } return 0; } int _tmain(int argc, _TCHAR* argv[]) { test_mem_use(); return 0; }
当没有设置大地址时,运行程序最后输出是:
201, 2010M
当设置大地址后,运行程序最后输出是:
298, 2980M
OK,确实看到效果了!
相关文章推荐
- 【利用USE_INDIRECT_DATA_BUFFERS突破32位的2G内存限制 】
- oracle9i在window server 2003 sp2 企业版突破1.7G内存限制
- 让32位应用程序不再为2G内存限制苦恼
- 让.Net 应用程序突破2G的内存访问限制
- 【ZT】如何在32位程序中突破地址空间限制使用超过4G的内存
- sql2005性能优化(在32位系统上突破2G内存使用量的方法)
- 32位win系统,突破4G内存限制方法
- win7 32位突破4g内存限制补丁让你的4G内存完全发挥出来
- 如何在32位程序中突破地址空间限制使用超过4G的内存
- sql2005性能优化(在32位系统上突破2G内存使用量的方法) .
- 如何在32位程序中突破地址空间限制使用超过4G的内存
- oracle在32位的Linux环境下SGA如何突破2GB内存限制的最终解决方案
- 突破2G内存限制 SQL2005 AWE应用测试
- 让32位应用程序不再为2G内存限制苦恼
- 如何在32位程序中突破地址空间限制使用超过4G的内存
- SQL SERVER支持更多内存,突破2G内存限制设置
- oracle在32位的Linux环境下SGA如何突破2GB内存限制的最终解决方案
- 让.Net 应用程序突破2G的内存访问限制
- win server 2003 将MBR转为GPT突破硬盘2TB的限制(附微软磁盘科普)
- 在windos server2003 的环境下 sql server 2005与Oracle 做接口报内存不足问题