2013-06-28 34 views
1

我在eclipse中构建了一个编辑器部件来可视化Zest图形。我的问题:如果我试图关闭一个包含大图(〜6000个节点,9000个边)的编辑器部件,eclipse无法处理关闭操作并挂起。无法关闭大热门图形的编辑器部分

任何想法来解决问题或调试它?

我认为问题在于配置图形对象,但我还没有想法解决它。

在此先感谢!

回答

0

问题是方法“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; 
    } 
+0

https://bugs.eclipse.org/bugs/show_bug.cgi?id=412446 – Yannic

0

为了调试它,我试着查看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

+0

有没有记录我的问题的信息,我不认为这是一个记忆的问题,因为在这种情况下,我应该得到一些例外? – Yannic

+0

@Yannic我仍然尝试设置一些更大的内存设置,看看会发生什么。您也可以尝试一个干净的Eclipse设置,例如只是SDK + Zest。如果它仍然挂断,我会很高兴与一个SSCCE的错误报告:http://sscce.org/ –

+0

我做了一些简单的例子7000节点和10000边缘。我的结果:用7000个节点和10,000个边关闭一个图形是没有问题的。用10个子图关闭Graph对象是​​个问题。您能否解释当用户关闭包含Graph对象的编辑器时调用哪些方法?我试图构建一个扩展Graph类的新类“ExtendedGraph”,并重写dispose方法以记录此方法的调用。但没有电话... – Yannic