Python WebkitGTK内存泄漏(clear函数)

2024-10-16 17:15:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个主干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,它有明确的功能,但它也没有帮助。在


Tags: 内存selfgtkgetsettingsinitmaindef
1条回答
网友
1楼 · 发布于 2024-10-16 17:15:12

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

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

相关问题 更多 >