如何让32位.Net 应用打开3G开关

昨天刚分享了《如何让.NET应用使用更大的内存》,结果就有同学说,<最好加一下32位如何开启大内存,因为很多传统项目32位,实在迁移不动了>,那么,我就验证了一些可行的方案,发现都挺简单的。

如何查看 Large Address Aware(大地址感知 [3G开关] )

最常用的工具就是dnSpy(在参考资料里,可以下载)

打开这个软件,把我们验证的MemeryTest (32) 应用程序直接拖拉进去,就会显示我们的程序集相关信息,在我的步骤第二步,编辑模块,就可以看到这个应用程序的PE头里的信息。

可以看到,默认是i386 机器,默认的 Larg Address Aware 是没有被选中的。


而 64位应用程序 默认是 AMD64机器,默认 Large Address Aware 是被选中的,也符合昨天分享文章中所说的,64位应用默认是开启的。

.Net 8应用

我刚好也验证了一下最新刚出来的.Net 8 应用程序,也发现,它的头部信息在 dnSpy里是如下所示

直接在文件头项里就能看到结果了

如何修改使能 Large Address Aware(大地址感知 [3G开关] )

dnSpy

最简单的方案就是使用dnSpy,
直接打对钩,然后,保存项目即可。

再次打开,发现已经被修改了

editbin.exe和dumpbin.exe Visual Studio 自带工具

我这边的工具路径在

C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.38.33130\bin\Hostx86\x86

然后,通过以下相关命令,来修改(使能)应用的3G开关。

.\editbin.exe   /largeaddressaware "E:\MemoryTest.exe"

通过以下命令来查看,是否修改成功

.\dumpbin.exe /headers "E:\MemoryTest.exe"

具体例子如下:

默认查看32位应用,是没有开启的

通过输入

.\editbin.exe   /largeaddressaware "E:\MemoryTest\bin\x86\Debug\MemoryTest.exe"

以下是输入后的样子

设置完之后,再次查看,已经开启了。

dotnetCampus.LargeAddressAware

我也是在搜索的时候发现这个优秀的库的,我看它的介绍是,支持 .NET Core 和 .NET Framework的。


使用方法也很简单,直接nuget 应用 <dotnetCampus.LargeAddressAware> 包即可。

编译生成后,直接就看到,它已经打开3G的开关了。

使用方法是特别的简单

实际原理分析

从这个图就可以看到,实际上它也是用了微软提供的工具来进行修改的。


从项目中也可以看到,它是通过编译的时候,顺便把开关给你开开。一种不错的解决方案。

总结

这种还在使用32位应用的场景大部分都是传统老的项目还在运行在很老的环境上,衷心希望这样长久的项目以后也越来越多(以后几百G的内存应该比比皆是了)。

再次感谢有反馈的大佬。

代码地址

https://github.com/kesshei/MemeryTest.git

https://gitee.com/kesshei/MemeryTest.git

参考资料地址

《dnspy》
https://github.com/dnSpy/dnSpy
《dotnetCampus.LargeAddressAware》
https://github.com/dotnet-campus/dotnetCampus.LargeAddressAware

一键三连呦!,感谢大佬的支持,您的支持就是我的动力!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/284969.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IDEA运行JSP启动后页面中文乱码

源代码截图&#xff1a; 运行结果截图&#xff1a; 在<head>标签内加入代码 <% page contentType"text/html; charsetgb2312"%> 重启服务器&#xff0c;问题已改善 ————————————————— 该文仅供学习以及参考&#xff0c;可做笔记收藏…

不同版本QT使用qmake时创建QML项目的区别

不同版本QT使用qmake时创建QML项目的区别 文章目录 不同版本QT使用qmake时创建QML项目的区别一、QT5新建QML项目1.1 目录结构1.2 .pro 文件内容1.3 main.cpp1.4 main.qml 二、QT6新建QML项目2.1 目录结构2.2 .pro文件内容2.3 main.cpp2.4 main.qml 三、两个版本使用资源文件的区…

手机大厂的自由窗口freeform功能基于aosp14/安卓14适配完成-千里马android framework实战开发

背景 hi&#xff0c;粉丝朋友们&#xff1a; 今年2023年已经块过去了&#xff0c;各个手机厂商已经开始适配aosp14&#xff0c;甚至有的是已经适配完成&#xff0c;明年市场就大部分手机出厂就都是android 14了。 近期有个马哥学员刚好求助马哥一个关于以前马哥课程里面自由窗…

【为数据之道学习笔记】5-7五类数据主题联接的应用场景

在数字化转型的背景下&#xff0c;华为的数据消费已经不再局限于传统的报表分析&#xff0c;还要支持用户的自助分析、实时分析&#xff0c;通过数据的关联&#xff0c;支持业务的关联影响分析以及对目标对象做特征识别&#xff0c;进行特定业务范围圈定、差异化管理与决策等。…

安装android studio

记录一下安装android studio的过程&#xff1a; 1.首先安装android studio到某一文件夹后&#xff0c;在C盘用户目录下可以看到.android文件夹。C:\Users\22515\AppData\Local\Google目录下也会出现AndroidStudio2022.2文件夹。&#xff08;注意&#xff1a;用户名&#xff0c…

如何访问AWS私有网络中的RDS (Mysql)

文章目录 小结问题及解决连接问题如何使用本地的Mysql Workbench对RDS进行访问 参考 小结 在AWS私有网络中部署了RDS (Mysql), 尝试通过外网成功地进行了访问. 问题及解决 连接问题 在AWS私有网络中部署了RDS (Mysql), 进行外网进行访问碰到了各种问题. 以下连接超时&…

(七)STM32 NVIC 中断、优先级管理及 AFIO 时钟的开启

目录 1. 中断相关知识简介 1.1 什么是中断 1.2 什么是内中断、外中断 1.3 什么是可屏蔽中断、不可屏蔽中断 2. CM3 内核中断介绍 2.1 F103系统异常清单 2.2 F103 外部中断清单 3. NVIC 简介 3.1 NVIC 寄存器简介 3.2 NVIC 相关寄存器的介绍 4. 中断优先级 4.1 优先…

python实现AES加解密小工具

需求 测试过程中需要对加密流量包进行加解密&#xff0c;有时候js太大调试过程中浏览器器会卡死。需要手动编写一个加解密工具对加解密信息处理。 实现 小工具是使用python3编写的 使用 python3 aes_tool.py encrypt "Hello, World!" key.txt --mode cfb python…

jconsole与jvisualvm

jconsole 环境变量配置好后 直接输入在cmd 输入jconsole 即可 jvisualvm cmd 输入jvisualvm jvisualvm 能干什么 监控内存泄露&#xff0c;跟踪垃圾回收&#xff0c;执行时内存、cpu 分析&#xff0c;线程分析… 运行&#xff1a;正在运行的 休眠&#xff1a;sleep 等待…

矩阵起源荣获“深圳企业创新(国际)纪录“殊荣

近期&#xff0c;第二十二届“深圳企业创新纪录”结果已经公示&#xff0c;矩阵起源凭借 MatrixOne 新一代超融合云原生异构数据库产品&#xff0c;荣获"深圳企业创新&#xff08;国际&#xff09;纪录"殊荣&#xff01; 该奖项由深圳市企业创新纪录组织委员会主办&a…

[德人合科技]——设计公司 \ 设计院图纸文件数据 | 资料透明加密防泄密软件

国内众多设计院都在推进信息化建设&#xff0c;特别是在异地办公、应用软件资产规模、三维设计技术推广应用以及协同办公等领域&#xff0c;这些加快了业务的发展&#xff0c;也带来了更多信息安全挑战&#xff0c;尤其是对于以知识成果为重要效益来源的设计院所&#xff0c;防…

NVMe over CXL技术如何加速Host与SSD数据传输?

在现代计算环境中&#xff0c;优化Host&#xff08;主机&#xff09;与device&#xff08;设备&#xff09;之间的数据传输速度对于提升系统整体性能和效率至关重要。目前业内主要有以下几种方案&#xff1a; Controller Memory Buffer (CMB)&#xff1a; CMB是一种集成在NVMe …