Я написал код в Eclipse, который работает правильно для небольших входных значений, но как только мои тестовые примеры увеличиваются в размере, я получаю или StackOverFlow
ошибки.куча и стек в eclipse
Я попытался использовать eclipse.exe -vmargs -Xmx1g
, чтобы моя куча вышла на 1G, но я все равно получаю ту же ошибку. и когда я попробую 2G, он говорит, что не может запустить JVM.
так что я задаюсь вопросом, есть ли вообще какие-либо способы для запуска этого кода. любая помощь будет оценена по достоинству. заранее спасибо.
EDIT: Это то, где мои кучи переполняются. входной образец слишком велик и вызывает проблему с матерью.
while ((line = br.readLine()) != null) {
String[] linevalue= (line.trim().split("\\s+"));
int l= linevalue.length;
dg.addNode(Long.parseLong(linevalue[0]));
dg.addNode(Long.parseLong(linevalue[1]));
dg.addEdge(Long.parseLong(linevalue[0]), Long.parseLong(linevalue[1]));
}
В другом классе присутствует следующий код, здесь mGraph - это HashMap.
public boolean addNode(T node) {
/* If the node already exists, don't do anything. */
if (mGraph.containsKey(node))
return false;
/* Otherwise, add the node with an empty set of outgoing edges. */
mGraph.put(node, new HashSet<T>());
return true;
}
public void addEdge(T start, T dest) {
/* Confirm both endpoints exist. */
if (!mGraph.containsKey(start) || !mGraph.containsKey(dest))
throw new NoSuchElementException("Both nodes must be in the graph.");
/* Add the edge. */
mGraph.get(start).add(dest);
}
Возможно, разместив код, мы могли бы вам помочь? Еще лучше, отправьте сообщение SSCCE http://sscce.org –
, тоже, сэр! –
это начало, но я не вижу никакой реальной проблемы в этом коде. Может быть, в addEdge или addNode есть рекурсия, которая быстро взрывается? Вы должны, вероятно, разоблачить все классы. –