处理Chromium内存耗尽的问题

5
我正在Raspberry Pi上运行一个Web应用程序,使用的是chromium浏览器,应该24/7运行。主要问题是它会内存不足并显示"他死了,吉姆"。我想知道是否有人能帮我:
  1. 指导我使用chromium扩展程序,如果内存不足就重新加载/重启浏览器
  2. 提供可能的cron job以检测内存是否不足,并在这种情况下重新启动浏览器
目标是让chromium每天保持运行状态,无需人工干预。因此,任何其他方法/想法都将不胜感激。 先感谢您!

chromium 运行在哪里?在树莓派上还是在你的笔记本电脑上?请详细介绍一下你的 Web 应用程序(展示一些源代码,并提供更多细节,包括使用的编程语言等)!我会在树莓派上使用类似于 libonion 的 HTTP 服务器库,在 C 或 C++ 程序中使用它。 - Basile Starynkevitch
嗨Basile,谢谢你的回复。Chromium正在树莓派上运行。它基本上是一个主系统的子系统,用于运行幻灯片展示图像和大量以图表形式呈现的数据。整个应用程序是在grails框架中开发的,幻灯片(视图)由jquery运行。每2小时,图表通过ajax请求更新数据以加载任何额外的数据。不知何故,这些定期的图表更新会导致内存泄漏,因为内存使用量不断增加。 - Lungelo
1个回答

3

实际上,我发现罪魁祸首是一些ajax请求,每隔几秒钟就会运行一次,检查服务器是否还在工作(虽然这是一个长故事,但必须这样做)。 后来,我在网上找到了一个小型的节省内存的解决方案:将所有的ajax请求放入一个变量中,使用后清除该变量(我也清除了整个应用程序中未使用的JavaScript变量)。下面是一个示例:

   function getData(){
        var request = $.ajax({
                url : "/someurl",
                type : "HEAD",
                dataType : "json",
                success : function(data) {
                    //use your data
                }
                error: function(){
                //doSomething
                },
                cache : false
            });


        //HERE IS THE HACK! :)
        data = null;
        request.onreadystatechange = null;
        request.abort = null;
        request = null;
        }

      setTimeout(function(){
         getData();
     }, 0.05 * 60 * 1000)
}

顺便提一下,我是在网上找到的这段代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接