Файл || Потоковая обработка и обычное потребление памяти - PullRequest
0 голосов
/ 20 апреля 2019

Мне нужно выяснить, сколько памяти было сохранено с использованием потоковой обработки или обычного чтения всего файла в памяти

Я пробовал 2 теста. Случай 1. Часть закомментированного потока. Случай 2: закомментированная нормальная часть обработки

//Normal process
        List<String> lines1 =Files.readAllLines(wiki_path);     
      for (String string : lines1) {
        System.out.println(string);
    }
//

      /* Stream process
        Stream<String> lines = Files.lines(wiki_path);
        System.out.println("<!-----Read all lines as a Stream-----!>");     //Stream processing
        lines.forEach(System.out :: println);
        lines.close();
     */

Объем используемой памяти составляет 36 МБ как для обычной, так и для потоковой обработки. Почему нет разницы в потреблении памяти между обоими подходами Размер файла составляет 8,5 МБ

Память рассчитывается с использованием runtime.totalMemory () - runtime.freeMemory ()

Примечание: если я комментирую циклы для обоих тестовых случаев, результат показывает разницу примерно в 25 мегабайт, т.е. поток обрабатывает только 4 мегабайта, тогда как обычный - 29 мб. Почему после добавления циклов в обоих тестовых примерах это не одно и то же?

...