Python WebkitGTK内存泄漏(清除函数)

Python WebkitGTK内存泄漏(清除函数),python,webkit,gtk,pygtk,Python,Webkit,Gtk,Pygtk,我有一个主干1页的应用程序,需要在不同路线上运行数小时。我已经在python上创建了运行我的浏览器和全屏的简单脚本 import sys from gi.repository import Gtk, Gdk, WebKit class BrowserWindow(Gtk.Window): def __init__(self, *args, **kwargs): super(BrowserWindow, self).__init__(*args, **kwargs)

我有一个主干1页的应用程序,需要在不同路线上运行数小时。我已经在python上创建了运行我的浏览器和全屏的简单脚本

import sys
from gi.repository import Gtk, Gdk, WebKit

class BrowserWindow(Gtk.Window):
    def __init__(self, *args, **kwargs):
        super(BrowserWindow, self).__init__(*args, **kwargs)

        self.connect("destroy", Gtk.main_quit)
        self.webview = WebKit.WebView()

        self.webview.connect("load-finished", self._load_finish)
        self.webview.connect("navigation-requested", self._navigation_requested)

        settings = self.webview.get_settings()
        print settings.get_property("enable-page-cache")
        settings.set_property("enable-page-cache", False)
        self.webview.set_settings(settings)
        self.webview.load_uri("http://www.google.com/")
        self.add(self.webview)
        self.show_all()

    def _load_finish(self, view, frame):
        print "Loading completed"
        print view

    def _navigation_requested(self, view, frame, request):
        print "Mavigation change requested"
        self.webview.get_back_forward_list().clear()
        return False

def main():
    Gtk.init(sys.argv)

    window = BrowserWindow()
    window.show()
    window.fullscreen()

    Gtk.main()
if __name__ == "__main__":
    main()
这里的问题是,每次它改变路由时,它都会增加一些内存。图像越多,内存增长越快。它倾向于使用更多的内存,而不是使用内存中的任何东西


我试图搜索一个清晰的函数,但没有得到任何帮助。我还尝试了功能清晰的QTWebkit,但也没有帮助。

真正的问题是:你确定内存使用是一个实际问题吗?现代浏览器(和网络视图)可能具有非常复杂的缓存行为:“倾向于使用更多内存,但没有利用它”,这很可能是一种过于简化的情况


也就是说,WebkitGTK确实可以让您对缓存行为进行一些控制:看看
set\u cache\u model()
和相关函数(它们是webkit2gtk中WebKitWebContext的一部分,以及WebkitGTK中的全局函数)。

您尝试过哪些特定版本的webkit?内存使用一直存在问题,但其中一些问题已在较新版本中得到修复。还要注意的是,MS Windows上的GTK在每个重新绘制的小部件上都存在内存泄漏(请参阅和)。PyGTK的当前windows版本尚未使用修复程序更新。如果您在windows上,避免内存泄漏的唯一方法是使用最新版本的GTK从源代码构建PyGTK。也就是说,正如Ekhumaro所指出的,webkit也可能存在问题。我使用的是PyQT4和/或PyWebkitGTK。我在Debian/XFCE4上,内存有限。我正在尝试在上找到它:你能给我更具体的WebKitWebContext的URL吗?内存在>40%左右增长如此之高,往往会减慢页面的行为。