Erreur java.lang.OutOfMemoryError : Java heap space
Bonjour,
Je sais que c'est une question commune, mais je dois dire que les solutions habituelles ne fonctionnent pas et je ne comprends pas pourquoi.
Tout d'abord voilà ma version de java :
Code:
1 2 3 4
| $ java --version
openjdk 11.0.4 2019-07-16
OpenJDK Runtime Environment (build 11.0.4+11-post-Ubuntu-1ubuntu218.04.3)
OpenJDK 64-Bit Server VM (build 11.0.4+11-post-Ubuntu-1ubuntu218.04.3, mixed mode, sharing) |
Ensuite voilà le code que je cherche à faire tourner :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| public class Main
{
public static void main(String[] args)
{
final int n = 10000;
double A[][] = new double[n][n];
double B[][] = new double[n][n];
double S[][] = new double[n][n];
int i,j;
for (i = 0; i<n; i++)
{
for (j = 0; j<n; j++)
{
A[i][j] = 1.0 / ((double) i*j);
B[i][j] = 1.0 / ((double) i*j);
}
}
// Somme
for (i = 0; i<n; i++)
{
for (j = 0; j<n; j++)
{
S[i][j] = A[i][j] + B[i][j];
}
}
}
} |
Autrement dit une bête somme de deux matrices. Pourtant voilà ce qu'il se passe une fois lancé après compilation :
Code:
1 2 3
| $ java Main
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at Main.main(Main.java:10) |
Après recherche, je trouve la solution d'augmenter la RAM autorisée pour la JVM en utilisant le flag -Xmx, voilà donc et ça ne fonctionne pas non plus :
Code:
1 2 3
| $ java Main -Xmx2048m
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at Main.main(Main.java:10) |
Ou encore :
Code:
1 2 3
| $ java Main -Xms1024m -Xmx2048m
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at Main.main(Main.java:10) |
Pourtant je ne crois pas me tromper si je dis que les variables de ce code prennent à peine 3x8x10000 o = 240 000 o environ en négligeant les entiers, c'est à dire bien moins que les 2048 Mo que je suis sensé allouer avec mes flags... (J'ai 8Go de RAM sur mon pc)
Est-ce que quelqu'un a une idée de pourquoi j'ai quand même cette erreur ? Et comment y remedier ?
Merci d'avance et bonne soirée