问题描述:

32位的程序运行在Win2016上,内存增加到1.4G左右就崩溃了。


原因分析:

默认情况下,32位程序虚拟地址空间是4G,其中2G为内核空间,系统使用;2G为用户虚拟地址空间,是用户可申请的最大内存大小。但是一般情况下,由于内存碎片、程序本身的数据等原因,用户可申请的内存大约是1.4~1.8G,如果程序内存达到1.4G以上,程序可能不稳定。
(1)我对1.4~1.8G这个值有些怀疑,于是我写了一个简单的程序测试:

@Override
#include <stdio.h>
#include <list>
#include <windows.h>int main()
{std::list<int*> testlist;while(1){# 每次申请40M内存,直至程序崩溃int *ptr=new int[10*1024*1024];testlist.push_back(ptr);sleep(100); }return 0;
}

发现申请内存接近于2G时,程序才崩溃。
(2)至于内存碎片的说法,当时程序其实都还没有频繁业务,只是启动时,加载某些模块内存达到了1.4G便崩溃,但是代码底层模块复杂,内存碎片也难计算出来。


解决方案:

(1)程序中加入代码,定时清理内存;
(2)程序定时重启;
总之是让程序内存在1.4G以下。

32位程序在Windows上的内存问题相关推荐

  1. 32位程序使用超过4G的内存 实例

    最近在做个程序,虽然是小型程序,但是使用的内存量却很大,动辄达到10G.在64位系统上可以轻松实现,无奈我是基于32位的系统进行开发,程序还没跑起来就已经被终止了.       试过很多办法,包括文件 ...

  2. 64位系统上运行32位程序的内存限制

    64位系统上运行32位程序能否申请到8G内存? 收藏到手机    转发   评论 2010-01-20 10:56 申请不到,因为64为系统在运行32位程序的时候只是为了向下兼容而已,对于32位程序来 ...

  3. 32位程序在64位系统上调用GetModuleFileNameEx失败

    今天客户打来电话说我们公司的服务器程序在新装的64位Windows 2003上以系统服务方式启动不起来.初步怀疑是我们的32位服务程序哪个地方在64位机上不兼容了.结果忙活了一上午,终于找到了问题所在 ...

  4. 32位程序在64位系统上运行

    32位程序在64位系统上运行 32位系统下的MFC文件,怎么在64位的系统上面运行? 先将32位的应用程序转换为64位的应用程序. 从32位应用程序到64位应用程序 编译:starlight 这篇文章 ...

  5. windows 32位系统中进程最大可用内存空间为3GB

    windows 32位系统中进程最大可用内存空间为3GB (转) http://msdn.microsoft.com/zh-cn/library/ms189334.aspx 进程地址空间 所有 32 ...

  6. 64位Ubuntu上编译32位程序

    1.确认主机为64位架构的内核,应该输出为adm64,执行: $ dpkg --print-architecture 2.确认打开了多支架功能,应该输出为i386,执行: $ dpkg --print ...

  7. 说说windows下64位程序和32位程序

    对于两者的区别先不说,先说说两者的影响吧. windows操作系统,尤其是win7下64位和32位的程序对一般用户来说影响都不是很大,只要程序能够正常运行就ok了,不需要关心那么多. 可是对于很多大型 ...

  8. 无法安装office此计算机安装了32位,在电脑上安装64位Office2013出错提示找到了32位程序如何解决...

    ‍ 目前微软主流的操作系统有32位和64位操作系统,而由用户反映自己在卸载了Office2007后,开始安装Office2013时提示安装出错,并且显示"无法安装64位版本的Office,因 ...

  9. 成功解决无法安装64位版本的office,因为在您的PC上找到了以下32位程序,已有32位版本

    成功解决无法安装64位版本的office,因为在您的PC上找到了以下32位程序,已有32位版本 目录 解决问题 解决思路 解决问题 无法安装64位版本的office,因为在您的PC上找到了以下32位程 ...

最新文章

  1. STM32 逐次逼近寄存器型(SAR)模拟数字转换器(ADC)
  2. 2019计算机原理及应用期末自测题,微机原理期末自测题答案.ppt
  3. ucl 数据压缩开源库 简介
  4. java生成的可执行文件_java生成可执行文件(制作可执行文件)
  5. 用美图秀秀(微软调色版)生成的R分量为255的图片在MATLAB和OpenCV中R分量为254
  6. dbus的代码范例 linux_linux-将结构传递给dbus方法的工具?
  7. C++counting sort计数排序(针对string)的实现算法(附完整源码)
  8. Web Service和Servlet的区别
  9. ArrayList理解(5)与vector区别
  10. 《Accelerated C++中文版》--- 读书笔记
  11. java多线程编码实现_Java多线程编码
  12. conda安装tensorflow-gpu=2.2.0
  13. 容器已成运维必备能力,你知道它是如何出现的吗?
  14. 闪讯(NetKeeper)——OpenWrt安装闪讯(NetKeeper)插件(校园网电信宽带闪讯(NetKeeper)认证解决方案)
  15. 数据分析2——探索性数据分析(多因子与复合分析)
  16. Xamarin.Forms学习之路——黑猫时钟App
  17. idea鼠标放大字体设置
  18. 图像注意力机制汇总学习
  19. React的Render的简单实现
  20. 算法模板:动态规划之线性DP【沈七】

热门文章

  1. 滑动窗口切割图片并重定位标注框
  2. 基于ndis protocol driver 后门 分析
  3. 国外类似VC的emule下载网站网址大全
  4. JavaScript实现动态广告弹出框
  5. 查找数组元素最大值和最小值(分治法)
  6. 随身WiFi刷Debian系统折腾指南
  7. 怎样让表格的行高一样_怎么把excel的行高变成一样的
  8. 怎样让表格的行高一样_excel表格多数据如何设置行高-Excel EXCEL中如何把行高平均成一样高...
  9. 如何实时抓取动态网页数据?
  10. ABP框架系列之三十:(Javascript-API-Javascript-API)