Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google chrome Chromium本机内存增长(通过映像缓存?)_Google Chrome_Chromium - Fatal编程技术网

Google chrome Chromium本机内存增长(通过映像缓存?)

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

我的单页web应用程序在Linux上使用Chromium时遇到内存泄漏情况。我的应用程序获取html标记并通过.innerHTML将其嵌入主页。远程html片段可能引用JPG或PNG。JS堆中不会发生内存泄漏。这可以在下表中看到

列A显示了performance.memory.usedJSHeapSize报告的JS堆大小。(我正在使用-启用精确内存信息参数运行Chromium,以获取精确值。)

列B显示了铬所占用的内存总量,如top所示(仅采样的起始值和结束值)

列C显示了/proc/meminfo报告的Linux中的“可用内存”量

       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年内一直处于停滞状态。这怎么可能?