2017-04-13 252 views
1

我目前正在开发一个应用程序,我需要启动多个JxBrowser。 而在这种情况下,当我使用JxBrowser运行我的应用程序时,我试图充分利用我的CPU使用率,100%的内存消耗和85%左右的内存消耗。 然后我开始使用Java Swing UI线程一次打开一个屏幕。在第一个屏幕初始化完成之前,我创建了另一个屏幕,导致出现以下错误: 。JxBrowser导致线程死锁120秒

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,但它没有帮助。

有没有人有任何想法,发生了什么? 谢谢。

回答

2

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

JxBrowser 6.14我们添加了验证配置文件目录的代码,并在目录已被其他BrowserContext实例或进程使用时引发异常。你可以试试6.14版本。它会帮助你确定这个问题的根源。

+0

如何更改Chromium配置文件目录?有没有可以使用的特定设置器? –

+0

@SajithDilshan查看示例https://jxbrowser.support.teamdev.com/support/solutions/articles/9000012878-creating-browser – Vladimir

+0

感谢您的详细链接 –