JxBrowser导致线程死锁120秒
JxBrowser causes the thread to be deadlock for 120 seconds
我目前正在开发一个应用程序,我需要在其中启动多个JxBrowser。
在这种情况下,当我使用 JxBrowser 运行 我的应用程序时,我尝试充分利用我的 CPU 使用率,100%
和内存消耗在 85% 左右。
然后我开始使用 Java Swing UI 线程一次打开一个屏幕。在第一个屏幕完成初始化之前,
我创建了另一个屏幕,这导致了以下错误。
com.teamdev.jxbrowser.chromium.BrowserException: Failed to load 'about:blank' web page within 120 seconds.
2017-04-13 15:05:23 257 ->[AWT-EventQueue-0]--[DEBUG]--[System]--com.teamdev.jxbrowser.chromium.BrowserException: Failed to load 'about:blank' web page within 120 seconds.
at com.teamdev.jxbrowser.chromium.Browser.b(Unknown Source)
2017-04-13 15:05:23 258 ->[AWT-EventQueue-0]--[DEBUG]--[System]-- at com.teamdev.jxbrowser.chromium.Browser.b(Unknown Source)
at com.teamdev.jxbrowser.chromium.Browser.<init>(Unknown Source)
2017-04-13 15:05:23 258 ->[AWT-EventQueue-0]--[DEBUG]--[System]-- at com.teamdev.jxbrowser.chromium.Browser.<init>(Unknown Source)
at com.teamdev.jxbrowser.chromium.Browser.<init>(Unknown Source)
2017-04-13 15:05:23 258 ->[AWT-EventQueue-0]--[DEBUG]--[System]-- at com.teamdev.jxbrowser.chromium.Browser.<init>(Unknown Source)
...
导致错误如此有问题的原因是我正在使用 GUI 线程创建浏览器,结果,
我的 GUI 线程被锁定 120 秒,然后被释放。并且将显示上述错误消息。
我目前使用的电脑是os = windows 7, i5 cpu, 8gb ram。
而JxBrowser = 6.6,升级到6.13也没有解决问题。
此外,我使用轻量级而不是高度重量的 BrowserType 来与 JInternalFrame 集成。
在这种情况下,当我正常打开我的应用程序时,一个接一个打开了3个jxBrowser。它按预期工作。
有谁知道发生了什么事?
研究了一段时间,看到了
我尝试添加 VM 参数 java.ipc.external=true
,但没有帮助。
有谁知道发生了什么事吗?
谢谢。
我假设您创建了多个 Browser
实例,其中不同的 BrowserContext
实例配置为使用相同的 Chromium 配置文件目录。请注意,Chromium 不允许在不同的 BrowserContext
实例或进程中同时使用相同的配置文件目录。它可能会导致不同的意外问题,包括 Chromium 引擎冻结甚至崩溃。
在 JxBrowser 6.14 中,我们添加了验证配置文件目录并在该目录已被另一个 BrowserContext
实例或进程使用时抛出异常的代码。你可以试试6.14版本。它将帮助您确定此问题的根本原因。
我目前正在开发一个应用程序,我需要在其中启动多个JxBrowser。 在这种情况下,当我使用 JxBrowser 运行 我的应用程序时,我尝试充分利用我的 CPU 使用率,100% 和内存消耗在 85% 左右。 然后我开始使用 Java Swing UI 线程一次打开一个屏幕。在第一个屏幕完成初始化之前, 我创建了另一个屏幕,这导致了以下错误。
com.teamdev.jxbrowser.chromium.BrowserException: Failed to load 'about:blank' web page within 120 seconds.
2017-04-13 15:05:23 257 ->[AWT-EventQueue-0]--[DEBUG]--[System]--com.teamdev.jxbrowser.chromium.BrowserException: Failed to load 'about:blank' web page within 120 seconds.
at com.teamdev.jxbrowser.chromium.Browser.b(Unknown Source)
2017-04-13 15:05:23 258 ->[AWT-EventQueue-0]--[DEBUG]--[System]-- at com.teamdev.jxbrowser.chromium.Browser.b(Unknown Source)
at com.teamdev.jxbrowser.chromium.Browser.<init>(Unknown Source)
2017-04-13 15:05:23 258 ->[AWT-EventQueue-0]--[DEBUG]--[System]-- at com.teamdev.jxbrowser.chromium.Browser.<init>(Unknown Source)
at com.teamdev.jxbrowser.chromium.Browser.<init>(Unknown Source)
2017-04-13 15:05:23 258 ->[AWT-EventQueue-0]--[DEBUG]--[System]-- at com.teamdev.jxbrowser.chromium.Browser.<init>(Unknown Source)
...
导致错误如此有问题的原因是我正在使用 GUI 线程创建浏览器,结果, 我的 GUI 线程被锁定 120 秒,然后被释放。并且将显示上述错误消息。
我目前使用的电脑是os = windows 7, i5 cpu, 8gb ram。 而JxBrowser = 6.6,升级到6.13也没有解决问题。 此外,我使用轻量级而不是高度重量的 BrowserType 来与 JInternalFrame 集成。
在这种情况下,当我正常打开我的应用程序时,一个接一个打开了3个jxBrowser。它按预期工作。 有谁知道发生了什么事?
研究了一段时间,看到了java.ipc.external=true
,但没有帮助。
有谁知道发生了什么事吗? 谢谢。
我假设您创建了多个 Browser
实例,其中不同的 BrowserContext
实例配置为使用相同的 Chromium 配置文件目录。请注意,Chromium 不允许在不同的 BrowserContext
实例或进程中同时使用相同的配置文件目录。它可能会导致不同的意外问题,包括 Chromium 引擎冻结甚至崩溃。
在 JxBrowser 6.14 中,我们添加了验证配置文件目录并在该目录已被另一个 BrowserContext
实例或进程使用时抛出异常的代码。你可以试试6.14版本。它将帮助您确定此问题的根本原因。