【发布时间】:2016-09-22 19:15:47
【问题描述】:
以下适用于 Eclipse 3.7 RCP 应用程序 - 在表格行中单击时下拉弹出菜单。
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(Neon,最新更新)中运行时,没有一个 ActionContributionItem 实例得到 GC'ed,当有许多项目每个都持有对其他对象的引用时,这会造成相当大的泄漏。
我在 e4 中做错了吗?
【问题讨论】:
-
这不是 e4。您有一个在 Eclipse 4 上运行的 3.x 兼容模式应用程序。
-
好的。它是在 e4 目标中运行的 e3 应用程序。你知道如何阻止泄漏吗?
-
这样的代码在 Eclipse 中到处都是,我还没有看到任何泄漏的报告。这几乎是所有 JFace 代码,是少数没有真正改变的领域之一。
-
这里有类似问题的报告:bugs.eclipse.org/bugs/show_bug.cgi?id=435274我现在正在使用分析器,每次右键单击我都会获得 ActionContributionItem 的增长计数。
-
该错误已在 4.4.2 中修复
标签: eclipse-rcp rcp e4