当前位置: 首页 > news >正文

c# 32位程序突破2G内存限制

起因

在开发过程中,由于某些COM组件只能在32位程序下运行,程序不得不在X86平台下生成。而X86的32位程序默认内存大小被限制在2G。由于程序中可能存在大数量处理,期间对象若没有及时释放或则回收,内存占用达到了1.2G左右,就会引发异常“内存溢出”。
环境:Visual Studio 2022

问题复现

在这里插入图片描述

解决方案

1、在VS中右键【启动项目】的【属性】,在【生成事件】中申请大内存
在这里插入图片描述
2、使用editbin.exe申请大内存(注意editbin这个exe需要vs安装c++相关组件)。安装好后一般在如下目录中:C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.30.30705\bin\Hostx86\x86
在命令行中输入如下命令:

CALL "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat"
editbin /largeaddressaware "$(TargetPath)"

3、再次运行,可见已成功突破2G内存限制
在这里插入图片描述

查看exe是否支持大内存

在命令窗口使用dumpbin查看。
命令:dumpbin /headers xxx.exe
运行命令后可见,蓝色框内,程序已经突破2G内存限制。
在这里插入图片描述

未突破2G内存限制程序显示:
在这里插入图片描述

天地不过是飘摇的逆旅,昼夜不过是光阴的门户。 ——《花镜》

http://www.lryc.cn/news/39031.html

相关文章:

  • 【C语言】指针详解总结
  • Java加解密(八)工具篇
  • Go框架三件套(Web/RPC/ORM)
  • HR问:假如公司给不到你期望的薪资怎么办?这个问题该如何体面地回答?
  • LearnOpenGL-高级OpenGL-2.模板测试
  • 【Git从入门到精通】Git入门
  • 软件测试18
  • C语言实现快速排序(hoare法、挖坑法、前后指针法与非递归实现)——不看后悔系列
  • 如何为系统可靠性的量化提供依据
  • 量化投资中的因子是什么?因子是如何分类的,包括哪些?
  • 力扣-修复表中的名字
  • 【博客633】linux vxlan设备工作原理
  • 3.12学习周报
  • 电力电子中逐波限流控制以及dsp实现
  • 【数据结构】 顺序表
  • Elasticsearch 集群规划- 单台机器核心数计算公式
  • Tesla都使用什么编程语言?
  • 1143. 最长公共子序列——【Leetcode每日刷题】
  • 【并发基础】线程的通知与等待:obj.wait()、obj.notify()、obj.notifyAll()详解
  • css黏性定位-实现商城的分类滚动的标题吸附
  • @Component和@bean注解在容器中创建实例区别
  • 不写注释就是垃圾
  • 深信服一面
  • 【C语言】深度理解指针(中)
  • 步进电机运动八大算法
  • 如果你持续大量的教坏ChatGPT,它确实会变坏
  • opencv学习(二)图像阈值和平滑处理
  • 【含源码】用python做游戏有多简单好玩
  • C++常用函数
  • Android Framework基础到深入篇