Estou usando métodos diferentes para diferentes programas para controlar seu gerenciamento de recursos. Quando eu usei systemd-run para gimp (programa de manipulação de imagem GNU), quando o requisito de memória da imagem é maior que o limite (ou seja, 300 MB que eu configurei), o programa travou e fechou. Existe algum método systemd-run que forneça usá-lo com segurança sem travar e limitar sua memória a um limite?
Eu usei o comando abaixo para iniciá-lo com systemd-run em seu atalho (ou seja, seu arquivo da área de trabalho):
systemd-run --scope -p MemoryLimit=300M gimp-2.8 %U
Um programa, como o gimp, é compilado, com todos os seus comportamentos predefinidos. Se não conseguir alocar memória para si mesmo, não poderá executar nenhuma tarefa. Toda vez que o programa tenta acessar a memória não consegue, ele deve sair (com uma falha de segmentação), pois o programa esperava ter essa memória para rodar, por exemplo no caso do gimp, para armazenar uma imagem.
Claro, essa imagem pode ser armazenada com menos memória RAM, mas isso não está no código do gimp, e apenas recusar o acesso do gimp à memória não o tornará mais eficiente.
Uma boa solução se você tiver problemas com pouca memória é um arquivo de troca . Isso não limitará o acesso do seu programa à memória, o que o quebrará, mas armazenará a memória não utilizada no disco (em vez de na RAM) e a retirará do disco quando precisar ser usada.