Объем используемой по умолчанию памяти 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-разрядной ОС.