2016-09-22 12 views
0

以下はEclipse 3.7 RCPアプリケーションで動作します - テーブル行でクリックするとポップアップメニューがドロップされます。 ActionContributionItemインスタンスのe4 RCPアプリケーション、ActionContributionItemメニューのリーク

private void hookContextMenu(TableViewer viewer) { 
    MenuManager menuMgr = new MenuManager("drillDownPopup"); 
    menuMgr.setRemoveAllWhenShown(true); 
    menuMgr.addMenuListener(new IMenuListener() { 
     @Override 
     public void menuAboutToShow(IMenuManager manager) { 
      //.. add bunch of actions to IMenuManager 
     } 
    }); 

    Menu menu = menuMgr.createContextMenu(viewer.getControl()); 
    viewer.getControl().setMenu(menu); 
    getSite().registerContextMenu(menuMgr, viewer); 
} 

これはE4で実行(ネオン、最新のアップデート)はいずれも、それぞれいくつかの他のオブジェクトへの参照を保持している多くの項目があり、非常にかなりのリークを作成GC'edを取得していません。

e4で何か問題がありますか?

+0

これはe4ではありません。 Eclipse 4.x互換モードのアプリケーションがあります。 –

+0

OKです。 e4ターゲットで実行されているe3アプリです。あなたは漏れを止める方法を知っていますか? – Dima

+0

このようなコードはEclipseのどこにでもあり、私はリークの報告は見ていません。これは、ほとんど変更されていないいくつかの領域の1つであるJFaceコードのほとんどすべてです。 –

答えて

0

これは上記のgreg-449コメントに対するものです。

Eclipse Neon自体をプロファイリングするスクリーンショットを投稿したいと思います。以下に表示されているのは、実行中のEclipseインスタンスでのorg.eclipse.jface.action.ActionContributionItemのインスタンスのカウンターです。スロープが上がるところでは、ソースコードエディタでコンテキストメニューをドロップダウンして右クリックをしています。右クリックすると孤立した貢献アイテムが残されます。それらは決してGC化されません。 1つを長くクリックすると、ヒープが残らずにJVMが死ぬだけです。

enter image description here

これは質問で示したコードスニペットを使って自分のRCPアプリケーションで起こるまさにです。私の投稿項目はJVMをずっと早くダウンさせるより重いオブジェクトを参照しています。今、私は漏れを止めるための解決策を探しています。

関連する問題