【问题标题】:CefSharp (chromium) javascript increase memory limitCefSharp(铬)javascript增加内存限制
【发布时间】:2019-03-11 10:03:29
【问题描述】:

我有一个 Web 应用程序,它通过显示大量数据报告来占用大量内存。应用程序从 ajax 调用到 php 脚本获取所需的最少信息,然后处理所有内容并保存在内存中。

有些报告太大了,以至于浏览器在达到 PC 的内存限制(5GB/8GB 免费)之前就崩溃了......所以我用 C# CefSharp 制作了一个浏览器应用程序,我正在寻找增加内存大小的方法,所以它不会崩溃。

我尝试尽我所能最小化数据并尽可能使用引用(没有重复值),并且整个报告必须在内存中,以便用户可以正确搜索和导航。这些报告的日期范围最长为 3 个月,因此我不会给他们提供所有时间的报告。

我看到一些线程告诉我应该通过传递 args 和类似的东西来增加 jsHeapSize,但我不确定如何这样做以及它是否会起作用。

如何增加我的 CefSharp 组件的内存限制?

谢谢。

【问题讨论】:

  • @vasily.sib - 当用户有另外 3GB RAM 可用时,也许 chrome 不应该将开发人员限制为仅 2GB 内存?我的 Chromium C# 应用程序在 8GB 内存达到 5GB 时崩溃……这绝对是荒谬的。一定有办法增加 CefSharp 中的内存限制。
  • @vasily.sib 如果只有 500MB 或 1GB RAM 可用,我会理解他们是否让系统崩溃应用程序,但我有 3GB 可用,我需要查看整个报告。我们的用户将决定他们是否要使用该应用程序,必须有一种方法来增加内存大小。如果你不能回答这个问题,请不要再无礼了,去做一些有用的事情吧。
  • 我不想失礼,抱歉。而且我无法回答这个问题(这就是我写 cmets 而没有回答的原因)。 There is another question 关于 V8 (Crome JS Engine) 的内存限制,可能会有所帮助。实际上,我认为这个问题无法回答,您应该找到另一种方法。
  • 您使用的是 64 位进程吗?对于 32 位,您将被限制为 2gb,大地址感知为 3gb。如果它在 Chrome 中不起作用,那么使用 CefSharp 将不会有更好的运气。
  • @amaitland - 是的,我使用的是 64 位 Chrome。与 CefSharp 相同。但也许值得尝试远离 arg 的大地址。如何通过?

标签: javascript c# chromium cefsharp chromium-embedded


【解决方案1】:

好的,伙计们,我已经想出了一个解决方案。

当您将这些参数传递给 chrome 可执行文件以将 javascript 内存限制设置为 16GB 时,chrome 会将其设置为 3.5GB。

--js-flags="--max_old_space_size=16384"

似乎将内存大小设置为 3.5 GB 以上会导致 Chrome 将其设置为 3.5GB,因此不允许更高的限制。

但是,在 CefSharp(嵌入铬)中,不存在此限制。 使用此代码:

CefSettings settings = new CefSettings();
settings.CefCommandLineArgs.Add("--js-flags", "--max_old_space_size=16384");

我可以将 CefSharp 组件的最大内存限制设置为 16gb,它不会再崩溃了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-03
    • 2019-02-19
    • 2019-03-13
    • 2023-03-09
    • 2014-04-24
    • 2023-03-22
    • 1970-01-01
    相关资源
    最近更新 更多