ChannelListners不断增长

时间:2018-06-21 19:00:37

标签: jxbrowser

在我的JxBrowser应用程序中,我根据给定的需求为每个请求创建并配置一个浏览器。几百次请求后,我开始收到“无法获取浏览器browserChannel”异常。为了调试此问题,我注意到我的ChannelListeners数量不断增长。我在browser.dispose()之后将以下代码添加到我的应用程序中。

    if (CollectionUtils.isNotEmpty(IPC.getDefault().getMainChannel().getChannelListeners())) {
        List<ChannelListener> channelListeners = IPC.getDefault().getMainChannel().getChannelListeners();
        for(ChannelListener listener : channelListeners) {
            logger.info("Listener: " + listener.getClass());
        }
    }

结果我的日志中发现了这4个重复

    2018-06-21 13:30:28,105 [pool-3-thread-1] INFO  c.t.l.l.a.service.BrowserManager - Listener: class com.teamdev.jxbrowser.chromium.ZoomService$a 
    2018-06-21 13:30:28,105 [pool-3-thread-1] INFO  c.t.l.l.a.service.BrowserManager - Listener: class com.teamdev.jxbrowser.chromium.NetworkService$a 
    2018-06-21 13:30:28,105 [pool-3-thread-1] INFO  c.t.l.l.a.service.BrowserManager - Listner: class com.teamdev.jxbrowser.chromium.NotificationService$a 
    2018-06-21 13:30:28,105 [pool-3-thread-1] INFO  c.t.l.l.a.service.BrowserManager - Listener: class com.teamdev.jxbrowser.chromium.ProtocolService$a 

这是我没有正确处理的东西吗?这是JxBrowser问题,也许与我的IPCException有关?

1 个答案:

答案 0 :(得分:0)

这4个侦听器属于实现为单例的默认IPC实例。因此,一旦您通过IPC访问默认的IPC.getDefault()实例,就会注册这4个监听器,而我们绝不会注销它们。

仅供参考:该库可能会在其中创建很多ChannelListeners。这些侦听器是内部专用逻辑的一部分。必要时将其删除。

关于“无法获取浏览器browserChannel”错误消息–此错误消息表明库未能初始化Browser实例。在这种情况下,应该分析日志消息以检测出问题的根本原因。