Java 瓦丁-破坏关闭窗口
我有一个使用multitab方法的Vaadin应用程序<代码>应用程序.getWindow(字符串名称)被重写的方式是,如果未找到Java 瓦丁-破坏关闭窗口,java,memory-leaks,vaadin,Java,Memory Leaks,Vaadin,我有一个使用multitab方法的Vaadin应用程序应用程序.getWindow(字符串名称)被重写的方式是,如果未找到super.getWindow(名称),它将创建一个新窗口并将其添加到应用程序中。所有窗口都有窗口。CloseListener,用于打印要输出的消息。我还看到了创建和销毁windows-constructor和finalize()的时刻,它们也将消息打印到控制台 当我刷新同一个浏览器选项卡时,会创建一个新窗口,我会在控制台中看到window.CloseListener的消息,
super.getWindow(名称)
,它将创建一个新窗口并将其添加到应用程序中。所有窗口都有窗口。CloseListener
,用于打印要输出的消息。我还看到了创建和销毁windows-constructor和finalize()
的时刻,它们也将消息打印到控制台
当我刷新同一个浏览器选项卡时,会创建一个新窗口,我会在控制台中看到window.CloseListener
的消息,并且没有来自finalize()
方法的消息。如果我添加一个计算实例数的单例原子长度(外接程序构造函数,dec infinalize()
),我会看到实例数(在这些刷新中)不断增加,并且不会随着时间而减少
似乎瓦丁的商店不知怎么关上了窗户。我还jmap
”创建了一个应用程序,并在eclipsemat中打开了堆文件。MAT显示关闭窗口的一个组件,UriFragmentUtility
,被一个链引用:Application
->WebApplicationContext
->CommunicationManager
->(通过paintableMap)UriFragmentUtility
(见附图)
如何销毁关闭的窗口以防止内存泄漏
UriFragmentUtility对于GC根,dofaApplication
是com.vaadin.Application
“>
更新
我发现,在代码窗口中,只有添加到Vaadin应用程序
,而没有删除。添加应用程序后。removeWindow()
与刷新同一选项卡相关的内容没有任何更改