CEditorをページとしてカスタムMultiPageEditorPartに追加しようとしています。何かのようなもの:
@Override
protected void createPages(){
myEditor = new CEditor();
addPage(myEditor , getEditorInput());
...
問題は、myEditorがリークされ、これにより大きなメモリリークが発生する可能性があることです。メモリリークは、削除されていないさまざまなリスナーが原因で発生します(CInformationProvider.EditorWatcherはpartListener、AdaptedSourceViewerのselectionChangeListenersなど)
独立したCEditorを開いたときと比較すると、サイトがPartSite(MultiPageEditorPartはデフォルトでそのページにMultiPageEditorSiteを作成する)であるため、エディターが閉じられていないことがわかりました(WorkbenchPage-> closeEditorメソッドを参照)。
CEditorページのエディターサイトをEditorSiteに変更しました。その後、エディターはリークされなくなりましたが、別のオブジェクトがまだリークしているため、エディターは適切に閉じられませんでした。さらに、keyBindingは機能しなくなりました。まだこのソリューションを機能させようとしていますが、正しいアプローチであるとは複雑に思えます。
私は何かが足りないのですか?エディターをページとして追加しても、それほど多くの問題は発生しません。