файл 8 GiB, Java heap 256 MiB
LogoRRR 26.8.0 · результаты измерений
Файл больше не обязан целиком
помещаться в Java heap.
Откройте лог объёмом в несколько GiB, перейдите к середине или в конец — Java heap останется ограниченной. Самый большой тестовый файл имел размер 8 GiB при лимите Java heap 256 MiB.
$ open production.log
- файл
- 8 GiB
- лимит Java heap
- 256 MiB
- первое окно
- 155 ms
- занятая Java heap
- 3.62 MiB
- PSS процесса
- 159.2 MiB
начало · середина · конец доступны
тест 8 GiB с ограниченной памятью
после открытия начала, середины и конца
26.8.0 и 26.2.0 на файле 2 GiB
Архитектура
От всего файла в памяти к чтению только нужного фрагмента
До 26.8.0 рост файла напрямую означал миллионы дополнительных объектов строк в памяти. Out-of-core движок поддерживает ограниченный рабочий набор и читает запрошенные окна из источника по мере необходимости.
Для тестового файла 2 GiB было занято около 3,21 GiB Java heap. На файле 4 GiB все три выпущенные версии исчерпали Java heap объёмом 4 GiB.
После открытия начала, середины и конца файла 8 GiB занятой оставалась лишь 3.62 MiB Java heap, хотя её лимит составлял 256 MiB.
Тот же файл · та же Java heap 4 GiB
Один лог 2 GiB в четырёх поколениях LogoRRR
Каждое значение — медиана трёх успешных запусков после очистки кэша конкретного файла. Меньший диапазон показывает самый быстрый и самый медленный измеренный запуск.
| Версия | Движок | Готово | Занятая Java heap | Пиковый PSS | Запуски |
|---|---|---|---|---|---|
| 24.4.0 | целиком в памяти | 7.66 s | 3.08 GiB | 4.19 GiB | 3 |
| 25.2.0 | целиком в памяти | 8.41 s | 3.21 GiB | 4.21 GiB | 3 |
| 26.2.0 | целиком в памяти | 9.89 s | 3.21 GiB | 4.21 GiB | 3 |
| 26.8.0 | out-of-core | 144 ms | 3.58 MiB | 159.2 MiB | 3 |
Доступные данные появились в 69 раз быстрее, а занятая Java heap уменьшилась в 918 раз. На файле 2 GiB сравнивались 26.8.0 и самая новая выпущенная версия в тесте — 26.2.0.
Прежний предел памяти
Выпущенные версии исчерпывают Java heap на 4 GiB; 26.8.0 продолжает работу
При Java heap 4 GiB все версии прошли тест с файлом 2 GiB. На файле 4 GiB каждый движок, удерживающий весь файл в памяти, исчерпал этот объём. Новый движок прошёл тесты 4 GiB и 8 GiB.
| Файл | 24.4.0 | 25.2.0 | 26.2.0 | 26.8.0 |
|---|---|---|---|---|
| 500 MiB | ✓ Успешно | ✓ Успешно | ✓ Успешно | ✓ Успешно |
| 1 GiB | ✓ Успешно | ✓ Успешно | ✓ Успешно | ✓ Успешно |
| 2 GiB | ✓ Успешно | ✓ Успешно | ✓ Успешно | ✓ Успешно |
| 4 GiB | × Java heap исчерпана | × Java heap исчерпана | × Java heap исчерпана | ✓ Успешно |
| 8 GiB | — Повторно не запускалось | — Повторно не запускалось | — Повторно не запускалось | ✓ Успешно |
После исчерпания Java heap в одной версии файлы большего размера отмечались как «повторно не запускалось», чтобы не воспроизводить ту же ошибку.
Тест с ограниченной памятью
Файл в восемь раз больше, потребление памяти почти не меняется
LogoRRR 26.8.0 запускался с лимитом Java heap 256 MiB. При увеличении файла с 1 GiB до 8 GiB занятая Java heap оставалась около 3,6 MiB, а общий PSS процесса — около 159 MiB.
- начало
- 152 ms
- середина
- 13 ms
- конец
- 6 ms
- Java heap
- 3.56 MiB
- PSS
- 157.3 MiB
- начало
- 146 ms
- середина
- 13 ms
- конец
- 7 ms
- Java heap
- 3.58 MiB
- PSS
- 160.0 MiB
- начало
- 146 ms
- середина
- 14 ms
- конец
- 9 ms
- Java heap
- 3.59 MiB
- PSS
- 158.9 MiB
- начало
- 155 ms
- середина
- 18 ms
- конец
- 12 ms
- Java heap
- 3.62 MiB
- PSS
- 159.2 MiB
Каждое значение — медиана трёх запусков. В таблице методики ниже приведены измеренные диапазоны для каждого окна.
Текущее практическое ограничение
Темп задаёт накопитель, а не память, растущая вместе с файлом
Чтобы вернуть первое окно, больше не нужно читать весь источник. Операции, которым требуется проверить каждый байт, по-прежнему зависят от скорости накопителя и файловой системы.
В отдельном тесте точного поиска по файлу 500 MiB первое совпадение появилось через 3.38 s. Полный просмотр занял 34.8 s при скорости 14.4 MiB/s.
Методика и происхождение данных
Воспроизводимые измерения с намеренно консервативными границами
В тесте выполняется настоящий код загрузчика каждого билда на детерминированных физически размещённых файлах. Каждый запуск использует отдельную JVM, а данные о памяти процесса поступают от операционной системы.
Контролируемые входные данные
Детерминированные строки лога UTF-8 фиксированной ширины в физически размещённых файлах, созданных до измерения.
Политика холодного файла
Перед каждым запуском очищается кэш операционной системы для тестового файла; общий кэш системы не сбрасывается.
Память процесса
Занятая Java heap измеряется после сборки мусора. Пиковый proportional set size (PSS) считывается из /proc/<pid>/smaps_rollup.
Две серии тестов
При Java heap 4 GiB все версии сравниваются до точки отказа. Отдельная серия ограничивает 26.8.0 до 256 MiB и проверяет файлы 1, 2, 4 и 8 GiB.
| Файл | Первое окно | Середина | Конец | Занятая Java heap | Пиковый PSS |
|---|---|---|---|---|---|
| 1 GiB | 152 ms 149–159 | 13 ms 12–14 | 6 ms 6–7 | 3.56 MiB | 157.3 MiB |
| 2 GiB | 146 ms 143–146 | 13 ms 12–13 | 7 ms 7–7 | 3.58 MiB | 160.0 MiB |
| 4 GiB | 146 ms 141–153 | 14 ms 13–15 | 9 ms 9–10 | 3.59 MiB | 158.9 MiB |
| 8 GiB | 155 ms 153–157 | 18 ms 15–18 | 12 ms 12–12 | 3.62 MiB | 159.2 MiB |
Окружение
Ubuntu 24.04.4 LTS, aarch64, 8 logical CPUs, openjdk version "25.0.2" 2026-01-20.
Билды
- 24.4.0 — выпущен 2024-06-06, артефакт
logorrr_24.4.0_arm64.deb, SHA-25627a4aea231dc78ba4b3838cc57361728bc714926f9270731bd7637eba8dda065 - 25.2.0 — выпущен 2025-12-23, артефакт
logorrr_25.2.0_arm64.deb, SHA-256f8de52dccb4224a25b0689aaef9d64618e98102d7134e637b249d1830c516fb1 - 26.2.0 — выпущен 2026-03-03, артефакт
logorrr_26.2.0_arm64.deb, SHA-256cfec5dd09753ba90167199aa5d94f388448fc518f7629bf598b7debb01489cca - 26.8.0 — снимок исходного кода на завершающем этапе выпуска
f5e31853, собран и измерен как 26.8.0
Идентификаторы данных
SHA-256 сравнения: 7de25d018ba40d51504ccd265f03a5ef8167bd9ae52d543e66880444d5223024
SHA-256 стресс-теста: 7f480db156fd24d6fa3d6946ea24c003ae8dd54abff5a3621c646aff2b58281e
Эти результаты относятся к данному файлу, компьютеру и протоколу, а не ко всем накопителям и нагрузкам. «Ограничено накопителем» означает, что максимальный протестированный размер файла больше не пропорционален занятой Java heap; операции над всем источником по-прежнему зависят от пропускной способности хранения. Самый большой тестовый файл: 8 GiB.
LogoRRR Pro
Откройте лог, который раньше был слишком большим
Доступ ко всему файлу входит в LogoRRR Pro. Бесплатный предварительный просмотр намеренно ограничен, чтобы вы могли оценить рабочий процесс перед разблокировкой больших файлов.