Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在没有内存泄漏的情况下,将一个CEditor作为一个页面添加到一个MultiPageEditorPart?_Java_Memory Leaks_Editor_Eclipse Cdt - Fatal编程技术网

Java 如何在没有内存泄漏的情况下,将一个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

我正在尝试将一个CEditor作为一个页面添加到一个自定义MultiPageEditorPart。比如:

@Override
protected void createPages(){
  myEditor = new CEditor();
  addPage(myEditor , getEditorInput());
...
问题是myEditor泄漏,这可能导致大内存泄漏。内存泄漏是由未删除的不同侦听器引起的(CInformationProvider.EditorWatcher是partListener,AdaptedSourceViewer的selectionChangeListeners等)

与打开一个独立的CEditor相比,我发现我的编辑器没有关闭(请参见WorkbenchPage->closeEditor方法),因为它的站点是一个PartSite(MultiPageEditorPart在默认情况下为其页面创建了一个MultiPageEditorSite)

我将CEditor页面的编辑站点更改为编辑站点。之后,编辑器不再泄漏,但由于另一个对象仍在泄漏,因此它仍然没有正确关闭。此外,键绑定不再工作。仍在努力使此解决方案起作用,但正确的方法似乎很复杂

我错过什么了吗?添加一个编辑器作为一个页面应该不会引起这么多问题