JxBrowser导致线程死锁120秒

时间:2017-04-13 10:22:35

标签: java jxbrowser

我目前正在开发一个应用程序,我需要启动多个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。它按预期工作。 有没有人知道发生了什么?

我已经研究了一段时间,并看到someone saying that there is a deadlock problem when using Mac OS 我尝试添加VM参数java.ipc.external=true,但它没有帮助。

有没有人知道,发生了什么? 谢谢。

1 个答案:

答案 0 :(得分:2)

我想你创建了几个Browser个实例,其中不同的BrowserContext实例配置为使用相同的Chromium配置文件目录。请注意,Chromium不允许同时在不同的BrowserContext实例或进程中使用相同的配置文件目录。它可能会导致不同的意外问题,包括在Chromium引擎中冻结甚至崩溃。

JxBrowser 6.14中,我们添加了验证配置文件目录的代码,并在该目录已被另一个BrowserContext实例或进程使用时抛出异常。您可以尝试6.14版本。它将帮助您确定此问题的根本原因。