Несколько раз вызывать одну и ту же программу Java, чтобы избежать превышения кучи, а также повлиять на статистику - PullRequest
0 голосов
/ 09 января 2020

Я выполняю тесты, пробуя несколько комбинаций параметров. Каждый из них должен быть выполнен 10 раз, чтобы я мог получить среднее значение.

В приведенном ниже коде представлена ​​моя первая попытка, объем которой превысил Java Пространство кучи.

For (int i=1; i<=10; ++i) {
   System.out.println("Test # " + i);
   method( { 1 } );
   method( { 2 } );
   ...
   method( { 1, 2 } );
   ...
   method( { 1, 2, 3, 4, 5 } );
}

Хотя метод вызывает System.g c (), проблема не устранена. По словам моего друга, вызов G C не гарантирует освобождения памяти. Как только все методы находятся на одном уровне «for», компилятор предотвращает это.

Итак, я попытался разделить свой тестовый случай, повторив только один и тот же случай.

for (int i=1; i<=10 ; ++ i) {
    System.out.println("Test # " + i);
    method( { 1 });
}

Время выполнения кода менялось очень по-разному: например, первая прошла 10 секунд, вторая 8 секунд, а вторая - 10 секунд. Обратите внимание, что это значительная разница по сравнению с первым временем выполнения. Мне нужно быть точным в отношении времени выполнения.

Наконец, я решил запустить вручную, но мне нужно все время ждать, чтобы начать все сначала.

Учитывая, что у нас есть 325 комбинаций, все выполненные 10 раз, я бы перезапустил 3250 раз выполнение, трудная задача, особенно учитывая, что я спешу завершить этот шаг и вычислить результаты.


Это Мне ясно, что мне нужно что-то вроде сценария оболочки, который вызывает код последовательно.

Вы, ребята, могли бы помочь мне, предложив один сценарий (я использую Ubuntu 18), передав в качестве параметра комбинацию?

Дайте мне знать, если она недостаточно ясна.

Большое спасибо заранее.

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