首页 > 解决方案 > jQuery .getJSON() 轮询内存泄漏

问题描述

我有一个显示一些统计数据的仪表板,直到现在它都是静态的,即如果我想要一个新数据,我必须刷新页面。从那以后,我开始使用 jquery 以更动态的方式在间隔内加载统计信息。它工作得很好,我不再需要刷新页面了。

但是,我注意到,如果我让页面打开一段时间,内存使用量会不断上升,而且没有停止的迹象。它从大约 50MB 开始,然后在几个小时(可能只有 1 个)后达到 1.2GB。刷新页面不会回收内存!

还有一个明显的问题......我做错了什么?

样品:

@app.route("/getstats")
def getstats():
    return jsonify({'data': render_template('stats.html', stats=stats())})


<script type="text/javascript">
    $(function poll() {
        var isMenuClosed = document.querySelector('.mdl-menu__container.is-visible') == null;
        if (isMenuClosed) {
            $.getJSON('/getstats',
                function(data) {
                    $("tbody#stats").empty().append(data.data);
                    componentHandler.upgradeDom();
                });
            $.getJSON('/getwidgets',
                function(wdata) {
                    $("div#widgets").empty().append(wdata.data);
                });
        }
        setTimeout(poll,5000);
        return false;
    }); 
</script>

我对 Python 尤其是 JavaScript 的了解非常有限。

标签: javascriptjqueryflaskmemory-leaks

解决方案


推荐阅读