我在eclipse中构建了一个编辑器部件来可视化Zest图形。我的问题:如果我试图关闭一个包含大图(〜6000个节点,9000个边)的编辑器部件,eclipse无法处理关闭操作并挂起。无法关闭大热门图形的编辑器部分
任何想法来解决问题或调试它?
我认为问题在于配置图形对象,但我还没有想法解决它。
在此先感谢!
我在eclipse中构建了一个编辑器部件来可视化Zest图形。我的问题:如果我试图关闭一个包含大图(〜6000个节点,9000个边)的编辑器部件,eclipse无法处理关闭操作并挂起。无法关闭大热门图形的编辑器部分
任何想法来解决问题或调试它?
我认为问题在于配置图形对象,但我还没有想法解决它。
在此先感谢!
问题是方法“org.eclipse.gef4.zest.layouts.algorithms.TreeLayoutObserver.TreeNode .isAncestorO f(TreeNode后代)“。我为我解决了这个问题,并且会报告一个错误(在注释中显示错误代码)。如果有人需要一个快速的bug修复:
旧版本:
public boolean isAncestorOf(TreeNode descendant) {
while (descendant.depth > this.depth) {
descendant = descendant.parent;
}
return descendant == this;
}
新版本:
public boolean isAncestorOf(TreeNode descendant) {
while (descendant.depth > this.depth) {
if (descendant == descendant.parent) {
return false;
} else {
descendant = descendant.parent;
}
}
return descendant == this;
}
为了调试它,我试着查看Eclipse日志文件(workspace/.metadata/.log
)以获取发生的事情的线索。这可能是一些记忆问题。如果听起来像那样构成日志文件,则可以尝试更改eclipse.ini
配置,特别是-XX:MaxPermSize
,-Xms
和-Xmx
值(请参阅http://wiki.eclipse.org/Eclipse.ini)。
如果问题与合理的内存值仍然存在,这将是巨大的,如果你能提交错误:https://bugs.eclipse.org/bugs/enter_bug.cgi?product=GEF&component=Zest
有没有记录我的问题的信息,我不认为这是一个记忆的问题,因为在这种情况下,我应该得到一些例外? – Yannic
@Yannic我仍然尝试设置一些更大的内存设置,看看会发生什么。您也可以尝试一个干净的Eclipse设置,例如只是SDK + Zest。如果它仍然挂断,我会很高兴与一个SSCCE的错误报告:http://sscce.org/ –
我做了一些简单的例子7000节点和10000边缘。我的结果:用7000个节点和10,000个边关闭一个图形是没有问题的。用10个子图关闭Graph对象是个问题。您能否解释当用户关闭包含Graph对象的编辑器时调用哪些方法?我试图构建一个扩展Graph类的新类“ExtendedGraph”,并重写dispose方法以记录此方法的调用。但没有电话... – Yannic
https://bugs.eclipse.org/bugs/show_bug.cgi?id=412446 – Yannic