Google chrome Chromium本机内存增长(通过映像缓存?)
我的单页web应用程序在Linux上使用Chromium时遇到内存泄漏情况。我的应用程序获取html标记并通过.innerHTML将其嵌入主页。远程html片段可能引用JPG或PNG。JS堆中不会发生内存泄漏。这可以在下表中看到 列A显示了performance.memory.usedJSHeapSize报告的JS堆大小。(我正在使用-启用精确内存信息参数运行Chromium,以获取精确值。) 列B显示了铬所占用的内存总量,如top所示(仅采样的起始值和结束值) 列C显示了/proc/meminfo报告的Linux中的“可用内存”量Google chrome Chromium本机内存增长(通过映像缓存?),google-chrome,chromium,Google Chrome,Chromium,我的单页web应用程序在Linux上使用Chromium时遇到内存泄漏情况。我的应用程序获取html标记并通过.innerHTML将其嵌入主页。远程html片段可能引用JPG或PNG。JS堆中不会发生内存泄漏。这可以在下表中看到 列A显示了performance.memory.usedJSHeapSize报告的JS堆大小。(我正在使用-启用精确内存信息参数运行Chromium,以获取精确值。) 列B显示了铬所占用的内存总量,如top所示(仅采样的起始值和结束值) 列C显示了/proc/memin
A B C
01 1337628 234.5 MB 522964 KB
02 1372198 499404 KB
03 1500304 499864 KB
04 1568540 485476 KB
05 1651320 478048 KB
06 1718846 489684 KB GC
07 1300169 450240 KB
08 1394914 475624 KB
09 1462320 472540 KB
10 1516964 471064 KB
11 1644589 459604 KB GC
12 1287521 441532 KB
13 1446901 449220 KB
14 1580417 436504 KB
15 1690518 457488 KB
16 1772467 444216 KB GC
17 1261924 418896 KB
18 1329657 439252 KB
19 1403951 436028 KB
20 1498403 434292 KB
21 1607942 429272 KB GC
22 1298138 403828 KB
23 1402844 412368 KB
24 1498350 412560 KB
25 1570854 409912 KB
26 1639122 419268 KB
27 1715667 399460 KB GC
28 1327934 379188 KB
29 1438188 417764 KB
30 1499364 401160 KB
31 1646557 406020 KB
32 1720947 402000 KB GC
33 1369626 283.3 MB 378324 KB
在我的33步测试中,JS堆只在1.3MB和1.8MB之间变化,而Chromium内存(如上图所示)增加了48.8MB(从234.5MB增加到283.3MB)。根据/proc/meminfo,同时“可用内存”甚至减少了145MB(从C列中的522964KB减少到378324KB)。我假设Chromium在报告的283.3MB之外占用了大量缓存。注意,我通过开发人员工具手动调用GC 6次
在运行测试之前,我已经停止了所有不必要的服务并终止了所有不必要的进程。没有其他代码并行执行任何基本工作。没有浏览器扩展,也没有其他打开的选项卡
内存泄漏似乎在本机内存中,可能涉及正在显示的图像。他们似乎永远不会被释放。这个问题似乎类似于(bugs.webkit.org)。我已经应用了这里列出的所有常用建议。如果我让应用程序继续运行,Chromium所占用的内存量将不断增长,直到一切都进入爬行状态,或者直到Linux OOM杀手攻击。我能做的一件事(在为时已晚之前)是将浏览器切换到不同的URL。这将释放所有本机内存,然后我可以返回到我的应用程序,继续使用全新的内存情况。但这不是一个真正的解决方案
Q:本机内存缓存能否以更为程序化的方式释放?报告浏览器错误的最佳场所是。这是一个根本性的问题,但它在未来10年内一直处于停滞状态。这怎么可能?