Skip to content

比对文件过大时,前端内存溢出,有什么内存限制的方法吗? #109

Description

@kingkong2019
No description provided.

Activity

  1. Shimada666 commented on Dec 5, 2023

    @Shimada666
    Owner

    文件有多大呢,把高亮语言设置成 plaintext 会好点么?

  2. kingkong2019 commented on Dec 5, 2023

    @kingkong2019
    Author

    10W行,语言默认应该设置的就是plaintext 吧,前端浏览器内存一直增长到17G以上,然后内存不足页面崩溃。

  3. Shimada666 commented on Dec 5, 2023

    @Shimada666
    Owner

    有点夸张了..10w行已经不是前端渲染能承受的量了吧,单是diff都要diff非常久。你要不要考虑文件过大不进行展示?

  4. enjoy-myLife commented on Jul 4, 2024

    @enjoy-myLife

    有点夸张了..10w行已经不是前端渲染能承受的量了吧,单是diff都要diff非常久。你要不要考虑文件过大不进行展示?

    我现在项目需要比对json,但是当达到1000行就有轻微卡顿,到4000行的时候就有明显卡顿,这个有考虑做一个懒加载嘛

  5. enjoy-myLife commented on Jul 4, 2024

    @enjoy-myLife

    10W行,语言默认应该设置的就是plaintext 吧,前端浏览器内存一直增长到17G以上,然后内存不足页面崩溃
    后面你是怎么解决的呢,我的才4000行,但是也有比较明显的卡顿

  6. Shimada666 commented on Jul 4, 2024

    @Shimada666
    Owner

    性能瓶颈其实不在懒加载。这种巨大量级的对比,可以考虑 monaco editor,他们对比 10w 行都没问题 @enjoy-myLife

  7. enjoy-myLife commented on Jul 4, 2024

    @enjoy-myLife

    性能瓶颈其实不在懒加载。这种巨大量级的对比,可以考虑 monaco editor,他们对比 10w 行都没问题 @enjoy-myLife

    好的好的,谢谢回复,我试下这个

  8. enjoy-myLife commented on Jul 4, 2024

    @enjoy-myLife

    性能瓶颈其实不在懒加载。这种巨大量级的对比,可以考虑 monaco editor,他们对比 10w 行都没问题 @enjoy-myLife

    有专门比对大体量json差异的插件推荐嘛,monaco editor包太大了,有18.44 MB,有点得不偿失了

  9. Shimada666 commented on Jul 4, 2024

    @Shimada666
    Owner

    @enjoy-myLife
    应该只是npm包大小吧,你可以试下引入后打包文件体积增加了多少

  10. Shimada666 commented on Aug 23, 2026

    @Shimada666
    Owner

    目前版本已经加入分批渲染和延迟高亮,默认先处理 1000 行;同时对超长行内对比和部分超大 diff 场景增加了性能保护,数千行文件相比旧版本已有改善。10 万行级文件仍不作为本组件的支持目标,因为主要瓶颈还包括同步 diff 计算和完整结果的内存占用,不是限制 DOM 渲染数量就能彻底解决。项目会继续保持轻量只读 viewer 的边界,超大文件建议使用 Monaco 等专用方案。感谢反馈。

  11. Shimada666 commented on Aug 23, 2026

    @Shimada666
    Owner

    补充一下 v1.16.0 的实际测试结果。测试环境:Apple M4 Max、36 GB 内存、Node.js 24.15.0、Chrome 151,使用 language="plaintext" 和 context=3。\n\n- 10 万行、单处变化:line-by-line 约 60.2 ms / 25.9 MB JS 堆;side-by-side 约 59.2 ms / 29.8 MB。\n- 10 万行、全部变化:line-by-line 约 243.5 ms / 52.7 MB;side-by-side 约 261.4 ms / 53.9 MB。\n- 1 万行组件保持挂载并连续更新 20 次,保留内存最多增长约 0.2 MB;10 万行反复挂载/卸载 5 次,没有观察到保留内存增长。\n\n当前版本未复现旧版本中内存持续增长到 17 GB 的问题。分批渲染会先处理最多 1,000 个可见行,后续内容按需加载和高亮。10 万行数据只是压力测试,不代表对任意超大文件作支持承诺;不同内容的 diff 复杂度仍可能不同。完整性能数据已经写入中文 README。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions