Java 如何在没有内存泄漏的情况下,将一个CEditor作为一个页面添加到一个MultiPageEditorPart?
我正在尝试将一个CEditor作为一个页面添加到一个自定义MultiPageEditorPart。比如:Java 如何在没有内存泄漏的情况下,将一个CEditor作为一个页面添加到一个MultiPageEditorPart?,java,memory-leaks,editor,eclipse-cdt,Java,Memory Leaks,Editor,Eclipse Cdt,我正在尝试将一个CEditor作为一个页面添加到一个自定义MultiPageEditorPart。比如: @Override protected void createPages(){ myEditor = new CEditor(); addPage(myEditor , getEditorInput()); ... 问题是myEditor泄漏,这可能导致大内存泄漏。内存泄漏是由未删除的不同侦听器引起的(CInformationProvider.EditorWatcher是partL
@Override
protected void createPages(){
myEditor = new CEditor();
addPage(myEditor , getEditorInput());
...
问题是myEditor泄漏,这可能导致大内存泄漏。内存泄漏是由未删除的不同侦听器引起的(CInformationProvider.EditorWatcher是partListener,AdaptedSourceViewer的selectionChangeListeners等)
与打开一个独立的CEditor相比,我发现我的编辑器没有关闭(请参见WorkbenchPage->closeEditor方法),因为它的站点是一个PartSite(MultiPageEditorPart在默认情况下为其页面创建了一个MultiPageEditorSite)
我将CEditor页面的编辑站点更改为编辑站点。之后,编辑器不再泄漏,但由于另一个对象仍在泄漏,因此它仍然没有正确关闭。此外,键绑定不再工作。仍在努力使此解决方案起作用,但正确的方法似乎很复杂
我错过什么了吗?添加一个编辑器作为一个页面应该不会引起这么多问题