• 请不要在回答技术问题时复制粘贴 AI 生成的内容
CallmeDredd
V2EX  ›  程序员

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

  •  
  •   CallmeDredd · Feb 2, 2023 · 3789 views
    This topic created in 1376 days ago, the information mentioned may be changed or developed.

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

    大家有什么好办法吗?

    11 replies  •  2023-02-04 07:21:03 +08:00
    bclerdx
    bclerdx
    Feb 2, 2023 via Android❤️2
    1
    没办法,想办法迁移到 64 位。
    sadfQED2
    sadfQED2
    Feb 2, 2023 via Android❤️1
    2
    理论上不重新编译成 64 位的应该没什么办法吧?
    feng32
    feng32
    Feb 2, 2023 via Android❤️1
    3
    高级系统设置里,把内核内存空间调到 1G ,用户态调到 3G

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

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

    注意,使用 editbin 之前必须备份好原 exe ,因为 editbin 会修改 exe 文件本身(其实名字本身就已经说明一切)
    lod
    lod
    Feb 2, 2023❤️3
    6
    #4 说的单独软件,玩一些老游戏经常用到
    https://ntcore.com/?page_id=371
    tool2d
    tool2d
    Feb 2, 2023
    7
    我刚写了一小段测试代码。

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

    而加了后,内存容量能到 3.8G ,厉害。
    fengjianxinghun
    fengjianxinghun
    Feb 2, 2023
    8
    @cnbatch 第一次知道,牛逼
    furlxy
    furlxy
    Feb 2, 2023
    9
    @cnbatch 大佬的回帖都是硬核技术
    giaodadi
    giaodadi
    Feb 3, 2023
    10
    多进程
    CallmeDredd
    CallmeDredd
    OP
    Feb 4, 2023
    11
    @nziu 我试了这个软件,超级好用!
    看了下这个作者网站,感觉是个超级有趣的人
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2702 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 00:42 · PVG 08:42 · LAX 16:42 · JFK 19:42
    ♥ Do have faith in what you're doing.