Ошибка переполнения стека: анализ с Eclipse JDT - PullRequest
0 голосов
/ 20 февраля 2020

Я сталкиваюсь с ошибкой переполнения стека при запуске моего анализатора в указанной c системе. Я не сталкивался с этой проблемой при разборе других систем аналогичного размера, поэтому не совсем уверен, в чем проблема.

Ошибка:

Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError
at Detector.getNodesParents(Detector.java:201)
at Detector.getNodesParents(Detector.java:202)
at Detector.getNodesParents(Detector.java:202)
at Detector.getNodesParents(Detector.java:202)
...

И самая важная часть класса Detector:

    private void arrangePairs() {
    System.out.println(nodes.size());
    for (Node node : nodes) {
        List<Node> parentList = getNodesParents(node, new ArrayList<Node>());
        for (Node parentNode : parentList) {
            nodePairs.add(new Pair<Node, Node>(parentNode, node));
        }
    }
    printPairs();
}

private List<Node> getNodesParents(Node node, List<Node> parentList) {
    if (node.getParent() == null) {
        return parentList;
    } else {
        parentList.add(node.getParent());
        getNodesParents(node.getParent(), parentList);
    }
    return parentList;
}

Я не уверен, что может быть причиной этого, помимо нехватки памяти, но в то же время этого не происходит в других системах аналогичного размера. Я проверил, что он достигает базового случая (getParent == null), и, похоже, переполнение стека после этой точки.

Спасибо.

...