Я использовал меньше, чтобы изучить довольно большой файл (8 ГБ на машине с 4 ГБ ОЗУ). Я сказал ему "прокрутить до конца" (shift+G), и он работал довольно долго, а затем был убит за использование оперативной памяти. Я думал, что less не будет использовать больше, чем ограниченный объем оперативной памяти.

1 ответ1

1

Объем используемой по умолчанию памяти less зависит от того, читает ли он файл или из канала; Непонятно, что происходит при чтении перенаправленного ввода из файла (less < FilePath вместо less FilePath).

Следующая выдержка из страницы руководства (в Ununtu 16.04) показывает, как управлять памятью, которая выделяет less :-

-b n или --buffers = n

Определяет объем буферного пространства, которое меньше будет использоваться для каждого файла, в единицах килобайт (1024 байта). По умолчанию для каждого файла используется 64 КБ буферного пространства (если файл не является каналом; см. Параметр -B ). Опция -b указывает, что для каждого файла следует использовать n килобайт буферного пространства. Если n равно -1, буферное пространство не ограничено; то есть весь файл может быть прочитан в память.

-B или --auto-buffers

По умолчанию, когда данные читаются из канала, буферы распределяются автоматически по мере необходимости. Если из канала читается большой объем данных, это может привести к выделению большого объема памяти. Параметр -B отключает это автоматическое распределение буферов для каналов, поэтому для канала используется только 64 КБ (или объем пространства, указанный в параметре -b ). Предупреждение: использование -B может привести к ошибочному отображению, так как только самая последняя просмотренная часть переданных данных сохраняется в памяти; любые предыдущие данные будут потеряны.

Я читаю это как означающее, что при чтении из канала -b не используется, если -B также не является опцией. Если вы хотите, чтобы это указывалось при каждом запуске, добавьте export LESS='-B' в вашу среду (в bash это будет строка в ~/.bashrc).

Обратите внимание, что это ограничит объем памяти, который будет пытаться выделить less , независимо от того, ограничена ли память недостаточным пространством подкачки или максимальным программным пространством 4 ГБ в 32-разрядной ОС.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .