E' molto probabile che sia perché ha bisogno di tanta memoria.
Sto risolvendo un problema di Arc Routing, e i miei thread devono spostarsi di nodi in nodi calcolando cammini minimi verso varie destinazioni. Facendo una serie di stampe di prove, effettivamente il programma si "incanta" nel calcolare i cammini minimi verso vari nodi. In quella porzione di codice non ci sono riferimenti a oggetti: applico un algoritmo di calcolo di distanze.
for (Nodo nodo:this.getNodi())
{
//System.out.println("qui");
Cammino c = new Cammino(nodo,nodo.minDistance,this.getShortestPathTo(nodo));
listaTotale.aggCammino(c);
}