V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
abelyao
V2EX  ›  问与答

求教, Electron 打包的 Linux 应用虚拟内存(VIRT)占到 1000g 是为什么

  •  1
     
  •   abelyao · 2023-03-23 09:50:55 +08:00 · 1173 次点击
    这是一个创建于 617 天前的主题,其中的信息可能已经有所发展或是发生改变。

    第一次做 electron 应用,对 Linux 也不是特别了解,希望大佬们能指点一下

    用 electron-builder electron 打包的 linux 应用,打开后通过 top 命令看到有个进程的虚拟内存占用达到 1100g ,还有几个 64g 的进程,但机器的物理内存总共才 64g ,swap 才 1g

    虽然知道虚拟内存有一部分是磁盘交换空间,但 1000g 也太夸张了 😂

    亲测 1. 一路从 electron 23.x 退到 13.x 才没这个问题

    亲测 2. 不要打包 而是直接用 electron 启动也有这个问题

    亲测 3. 业内知名公司 vercel 出的应用 hyper 也复现了这个情况

    到底是为什么啊 😂

    虽然知道 VIRT 不是实际使用的内存,但甲方不接受啊啊啊啊啊

    有什么方法可以优化吗

    已经试过了

    app.disableHardwareAcceleration()
    app.commandLine.appendSwitch("disable-gpu")
    app.commandLine.appendSwitch("max-memory", "1GB")
    

    没效果啊

    5 条回复    2023-03-23 13:37:58 +08:00
    jackyzy823
        1
    jackyzy823  
       2023-03-23 11:28:15 +08:00
    试试这个 https://stackoverflow.com/questions/43933951/how-to-increase-the-max-memory-limit-for-the-app-built-by-electron-builder

    app.commandLine.appendSwitch('js-flags', '--max-old-space-size=4096');
    abelyao
        2
    abelyao  
    OP
       2023-03-23 11:43:38 +08:00
    @jackyzy823 不起作用… 内存占用实际不高,就 200M 左右,是虚拟内存有异常
    jackyzy823
        3
    jackyzy823  
       2023-03-23 12:17:03 +08:00
    那试试外部控制 例如 ulimit 或者 cgroup 之类的。
    f6x
        4
    f6x  
       2023-03-23 12:28:03 +08:00
    你自己都不贴出实际内存占用 RES. 还指望能给甲方解释清楚?
    abelyao
        5
    abelyao  
    OP
       2023-03-23 13:37:58 +08:00
    @f6x 啥意思?甲方自己 top 看 VIRT 的啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2875 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 13:33 · PVG 21:33 · LAX 05:33 · JFK 08:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.