工作原因要用到一个老的 32 位应用,每次打开都存都是用满 2G 的,任务多了以后就会出现闪退的情形,最近又添加了点数据进去,操作时候白屏变成了家常便饭。 。。。cry 。。。
大家有什么好办法吗?
1
bclerdx 2023-02-02 12:56:16 +08:00 via Android 2
没办法,想办法迁移到 64 位。
|
2
sadfQED2 2023-02-02 12:56:52 +08:00 via Android 1
理论上不重新编译成 64 位的应该没什么办法吧?
|
3
feng32 2023-02-02 13:05:15 +08:00 via Android 1
高级系统设置里,把内核内存空间调到 1G ,用户态调到 3G
可能会有些副作用,谨慎使用 |
4
sloknyyz 2023-02-02 13:08:43 +08:00 1
32 位顶多也就是把 LARGEADDRESSAWARE 开启。64 位也不是说上就上的,如果用到第三方库,还要把那些东西也一并搞成 64 位的。
首先还是优化下内存占用,用不到的内存及时释放掉。其次还可以考虑多进程,用 ipc 交互。实在没办法了再考虑 64 位。 |
5
cnbatch 2023-02-02 13:10:19 +08:00 17
如果你的电脑有 Visual Studio ,那么可以打开“Developer Command Promote for VS****”,再用 editbin /largeaddressaware 给这个 exe 启用大地址支持,这样可以用满 4G 内存。
用法很简单:editbin /largeaddressaware 你的程序.exe 注意,使用 editbin 之前必须备份好原 exe ,因为 editbin 会修改 exe 文件本身(其实名字本身就已经说明一切) |
6
nziu 2023-02-02 13:28:14 +08:00 3
#4 说的单独软件,玩一些老游戏经常用到
https://ntcore.com/?page_id=371 |
7
tool2d 2023-02-02 13:44:53 +08:00
我刚写了一小段测试代码。
32 位程序,编译不加 /LARGEADDRESSAWARE ,只能分配 1.8G 。 而加了后,内存容量能到 3.8G ,厉害。 |
8
fengjianxinghun 2023-02-02 15:59:55 +08:00
@cnbatch 第一次知道,牛逼
|
10
giaodadi 2023-02-03 01:00:46 +08:00
多进程
|
11
CallmeDredd OP @nziu 我试了这个软件,超级好用!
看了下这个作者网站,感觉是个超级有趣的人 |