gpt4 book ai didi

javascript - 使用 WebkitGTK 泄漏

转载 作者:太空宇宙 更新时间:2023-11-04 03:57:46 27 4
gpt4 key购买 nike

我正在试验 WebkitGTK。使用一个简单的“hello world”风格的应用程序,除了下载网页然后退出,WebKit 会在运行该程序后报告泄漏的对象:

LEAK: 1 CachedResource
LEAK: 12 WebCoreNode

WebkitGTK 程序是一个简单的 C 程序:

#include <gtk/gtk.h>
#include <webkit/webkit.h>
#include <stdio.h>

static void load_status_callback(GObject* object, GParamSpec* pspec, void* window)
{
WebKitWebView* view = WEBKIT_WEB_VIEW(object);
WebKitLoadStatus status = webkit_web_view_get_load_status(view);

switch (status)
{
case WEBKIT_LOAD_FINISHED:
{
printf("WEBKIT_LOAD_FINISHED\n");
gtk_main_quit();
break;
}
default: g_assert_not_reached();
}
};

int main(int argc, char* argv[])
{
gtk_init(&argc, &argv);
GtkWidget *main_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size(GTK_WINDOW(main_window), 800, 600);
WebKitWebView *webView = WEBKIT_WEB_VIEW(webkit_web_view_new());

GtkWidget *scrolledWindow = gtk_scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledWindow),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
gtk_container_add(GTK_CONTAINER(scrolledWindow), GTK_WIDGET(webView));
g_signal_connect(webView, "notify::load-status", G_CALLBACK(load_status_callback), main_window);
gtk_container_add(GTK_CONTAINER(main_window), scrolledWindow);

webkit_web_view_load_uri(webView, "http://127.0.0.1/test.html");
gtk_widget_grab_focus(GTK_WIDGET(webView));
gtk_widget_show_all(main_window);

gtk_main(); // Run main event loop

gtk_widget_destroy(main_window);

return 0;
}

我下载的 HTML 很简单:

<html>
<head>
<script type = "text/javascript"></script>
</head>
<body>
<div id = "foo"></div>
</body>
</html>

经过一些实验,我发现如果删除 <script> 就不会发生泄漏。标签,这让我相信我应该做些什么来关闭 JavaScriptCore。那么,为什么 WebKit 会报告泄漏?

最佳答案

这不是您在代码中做错的任何事情。您的问题是您使用的是 WebKit 的调试版本,因此它报告了 WebKit 错误:应该在 WebKit 内部修复的内存泄漏。

您应该切换到使用 WebKit 的发布版本,除非您实际上是在尝试调试特定的东西。调试构建速度较慢,并且在启用断言的情况下运行,这实际上使它们比发布构建更频繁地崩溃。

关于javascript - 使用 WebkitGTK 泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14836733/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com