Eclipse 无法关闭具有大zest图的编辑器部分

Eclipse 无法关闭具有大zest图的编辑器部分,eclipse,graph,editor,zest,Eclipse,Graph,Editor,Zest,我在eclipse中构建了一个编辑器部件来可视化Zest图。我的问题是:如果我试图关闭一个包含6000个节点、9000条边的大型图的编辑器部分,eclipse将无法处理关闭操作并挂起 有什么办法解决这个问题或调试它吗 我认为问题在于处理图形对象,但我没有解决它的想法 提前谢谢 为了调试它,我会尝试查看Eclipse日志文件workspace/.metadata/.log,以了解发生了什么。可能是内存问题。如果在日志文件中听起来像这样,您可以尝试更改eclipse.ini配置,特别是-XX:Max

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

有什么办法解决这个问题或调试它吗

我认为问题在于处理图形对象,但我没有解决它的想法


提前谢谢

为了调试它,我会尝试查看Eclipse日志文件workspace/.metadata/.log,以了解发生了什么。可能是内存问题。如果在日志文件中听起来像这样,您可以尝试更改eclipse.ini配置,特别是-XX:MaxPermSize、-Xms和-Xmx值,请参阅


如果这个问题在合理的内存值下仍然存在,那么如果您可以提交一个bug就太好了:

问题是org.eclipse.gef4.zest.layouts.algorithms.TreeLayoutObserver.TreeNode.isAncestorO方法‌​fTreeNode后代。我为我修复了它,我将在评论中为bug id show报告一个bug。如果有人需要快速修复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;
    }

没有关于我的问题的记录信息,我不认为这是内存问题,因为在这种情况下,我应该得到一些异常?@Yannic我仍然会尝试设置一些更大的内存设置,看看会发生什么。您还可以尝试一个干净的Eclipse设置,例如只使用SDK+Zest。如果它仍然挂断,我会很高兴看到一个带有SSCCE的bug报告:我制作了一些带有7000个节点和10000条边的简单示例。我的结果是:关闭一个包含7000个节点和10000条边的图是没有问题的。用10个子图关闭图形对象是一个问题。您能否解释当用户关闭包含图形对象的编辑器时调用哪些方法?我尝试构建一个新的类ExtendedGraph,它扩展Graph类并重写dispose方法来记录此方法的调用。但是没有调用…@Yannic有趣,所以这是一个子图问题-你能用一个示例片段提交一个bug来重现这个吗?我检查了存储库并调试了代码。确切的问题是方法:org.eclipse.gef4.zest.layouts.algorithms.TreeLayoutObserver.TreeNode.isAncestorOfTreeNode后代我要修复这个问题,因为我不能等待正式的bug修复。