A quantidade padrão de memória usada por less
depende se ele está lendo um arquivo ou de um canal; não está claro o que acontece ao ler a entrada redirecionada de um arquivo ( less < FilePath
em vez de less FilePath
).
O seguinte trecho da página de manual (no Ununtu 16.04) mostra como controlar a memória que less
aloca: -
-bn or --buffers=n
Specifies the amount of buffer space less will use for each file, in units of kilobytes (1024 bytes). By default 64 K of buffer space is used for each file (unless the file is a pipe; see the -B option). The -b option specifies instead that n kilobytes of buffer space should be used for each file. If n is -1, buffer space is unlimited; that is, the entire file can be read into memory.
-B or --auto-buffers
By default, when data is read from a pipe, buffers are allocated automatically as needed. If a large amount of data is read from the pipe, this can cause a large amount of memory to be allocated. The -B option disables this automatic allocation of buffers for pipes, so that only 64 K (or the amount of space specified by the -b option) is used for the pipe. Warning: use of -B can result in erroneous display, since only the most recently viewed part of the piped data is kept in memory; any earlier data is lost.
Eu li isso como significando que, ao ler de um pipe, -b não é usado, a menos que -B também seja uma opção. Se você quiser que isso seja especificado em todas as execuções, adicione export LESS='-B'
ao seu ambiente (em bash
, isso seria uma linha em ~/.bashrc
).
Observe que isso limitará a memória less
tenta alocar, se a memória é restrita pelo espaço de troca inadequado ou pelo espaço máximo do programa de 4 GB em um sistema operacional de 32 bits.