Я сталкиваюсь с ошибкой переполнения стека при запуске моего анализатора в указанной 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), и, похоже, переполнение стека после этой точки.
Спасибо.