webBrowserTools.showWebPage打开的窗口导致内存泄漏?

使用webBrowserTools.showWebPage将一个Screen打开到了浏览器的标签页,发现当用户关闭浏览器标签页的时候,对应的Screen对象并没有销毁。反复打开后台Screen的实例不断增加,造成内存泄漏,请问是不是有什么配置或者特殊的写法来应对这种浏览器打开的窗口?

如果是在CUBA的Maintab里打开并关闭是没有问题的。

能不能再详细描述一下?

  • 如何监测到实例不断增加?
  • 出现内存泄漏时有没有异常日志?

因为我在Screen里面做了UIEvent事件的监听,并记录了LOG。正常情况下,比如在MainTab里多次打开关闭后(只保留一个),发一个消息,日志里记录只收到一个消息;当在浏览器的标签页多次打开关闭后(只保留一个),发现日志中记录的情况是发一个消息,收到N个消息(打开过N次界面)。打断点也能发现不断的进入监听方法(因为之前的Screen实例还存在)。倒是没有短时间开非常多次,导致异常出现。

哦,那可能是存在问题, 只是可能。因为浏览器标签页在关闭后后端不会立即检测到连接丢失,所以这块进行Screen回收会有一个延迟。可以进一步观察一下,打开一个界面,等待1分钟后再看看这个界面是否还在响应事件。