java.lang.OutOfMemoryError: Ошибка пространства кучи Java не решена с помощью -Xmx и -Xms - PullRequest
1 голос
/ 21 сентября 2019

Я новичок в Java, и я попытался создать код, который суммирует две матрицы, но у меня есть ошибка:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at Main.main(Main.java:11)

Я попробовал все эти команды:

$ java Main
$ java Main -Xmx2048m
$ java Main -Xms1024m
$ java Main -Xms1024m -Xmx2048m
$ java -Xmx2048m Main
$ java -Xms1024m Main
$ java -Xms1024m -Xmx2048m Main

Но все выдают одно и то же сообщение об ошибке ...

Это код:

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.0d / ((double) i*j);
                B[i][j] = 1.0d / ((double) i*j);
            }
        }

        for (i = 0; i<n; i++)
        {
            for (j = 0; j<n; j++)
            {
                S[i][j] = A[i][j] + B[i][j];
            }
        }
    }
}

Итак, как вы можете видеть, для этого кода нужно ~ 3x8x10000 B = 240 000 B <2048 МБ,Моя версия Java: </p>

$ java -version
openjdk version "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)

Ответы [ 2 ]

1 голос
/ 21 сентября 2019

Флаги работают, но ваша математика не проверяется.

У вас есть 3 массивы, каждый со значениями 10 000 * 10 000 * 8B.
Для этого вам нужно 3 * 10 000 * 10 000 * 8 Bytes ..., что составляет 2289 MB.
Это уже больше, чем 2048,

Чтобы добавить к этому, каждый из этих 3 массивов содержит 10 000 ссылок ... но объем памяти в этом случае незначителен (меньше чем 1MB) по сравнению со значениями.

0 голосов
/ 21 сентября 2019

Я могу запустить ваш код без каких-либо настроек Xms или Xmx.У моего ноутбука 16 ГБ памяти.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...