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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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