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 :
$ 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 chercher à faire tourner :
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 :
$ 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 :
$ java Main -Xmx2048m
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at Main.main(Main.java:10)
Ou encore :
$ 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
- Edité par Anthony Gerber-Roth 20 septembre 2019 à 22:09:14
Tu oublies que tes matrices ont deux dimensions. Le bon calcul est donc : \(3\times8\times(10000)^2\) soit 2,4 Go...
- Edité par Zachee54 23 septembre 2019 à 10:53:46
Erreur java.lang.OutOfMemoryError
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.