Par défaut, la mémoire RAM allouée à la machine virtuelle n'est pas très grande.
Ya moyen de gérer ça lors de l'execution de l'appli' (quand tu lances ton jar/executable).
Sinon dans le code, essaie d'utiliser le moins de références possibles, essaie d'appeler le moins de fonctions possible (genre n'utiliser que la valeur de retour affectée par un méthode plutôt que la méthode elle-même), optimiser les itérations:
int length = ..;
for(int i = length; i > 0 ; i--) {
}
plutôt que
int length = ..;
for(int i = 0; i < length ; i++) {
}
où tu feras appel à length plusieurs fois.
Pleins d'autres astuces