32 位应用内存不够了应该怎么办

2023-02-02 12:44:40 +08:00
 CallmeDredd

工作原因要用到一个老的 32 位应用,每次打开都存都是用满 2G 的,任务多了以后就会出现闪退的情形,最近又添加了点数据进去,操作时候白屏变成了家常便饭。 。。。cry 。。。

大家有什么好办法吗?

2389 次点击
所在节点    程序员
11 条回复
bclerdx
2023-02-02 12:56:16 +08:00
没办法,想办法迁移到 64 位。
sadfQED2
2023-02-02 12:56:52 +08:00
理论上不重新编译成 64 位的应该没什么办法吧?
feng32
2023-02-02 13:05:15 +08:00
高级系统设置里,把内核内存空间调到 1G ,用户态调到 3G

可能会有些副作用,谨慎使用
sloknyyz
2023-02-02 13:08:43 +08:00
32 位顶多也就是把 LARGEADDRESSAWARE 开启。64 位也不是说上就上的,如果用到第三方库,还要把那些东西也一并搞成 64 位的。
首先还是优化下内存占用,用不到的内存及时释放掉。其次还可以考虑多进程,用 ipc 交互。实在没办法了再考虑 64 位。
cnbatch
2023-02-02 13:10:19 +08:00
如果你的电脑有 Visual Studio ,那么可以打开“Developer Command Promote for VS****”,再用 editbin /largeaddressaware 给这个 exe 启用大地址支持,这样可以用满 4G 内存。

用法很简单:editbin /largeaddressaware 你的程序.exe

注意,使用 editbin 之前必须备份好原 exe ,因为 editbin 会修改 exe 文件本身(其实名字本身就已经说明一切)
nziu
2023-02-02 13:28:14 +08:00
#4 说的单独软件,玩一些老游戏经常用到
https://ntcore.com/?page_id=371
tool2d
2023-02-02 13:44:53 +08:00
我刚写了一小段测试代码。

32 位程序,编译不加 /LARGEADDRESSAWARE ,只能分配 1.8G 。

而加了后,内存容量能到 3.8G ,厉害。
fengjianxinghun
2023-02-02 15:59:55 +08:00
@cnbatch 第一次知道,牛逼
furlxy
2023-02-02 19:56:00 +08:00
@cnbatch 大佬的回帖都是硬核技术
giaodadi
2023-02-03 01:00:46 +08:00
多进程
CallmeDredd
2023-02-04 07:21:03 +08:00
@nziu 我试了这个软件,超级好用!
看了下这个作者网站,感觉是个超级有趣的人

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/912537

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX