Такое поведение может сильно мешать, когда эта программа не единственная на машине. Или вы не видите смысла давать ей столько памяти - все равно лучше не работает.

Однако! Если у вас дистрибутив на systemd, особенно из боле-менее свежих, то для простого запуска с ограничением памяти для единственной программы ничего долго и нудно курить не надо. Можно просто сделать так:
systemd-run --scope -p MemoryMax=2G --user my_limited_program
Здесь --user нужен для того, чтобы запускалось от обычного пользователя (вас), т.к. по умолчанию будет от root, с запросом пароля. Вообще systemd-run умеет еще много всякого интересного, но это уже тема для другого разговора.
А здесь он просто сконфигурирует для нас cgroup для запуска программы. В примере выше - ей будет доступно не более 2GB памяти. Если не уложится - вылетит с ошибкой о недостатке памяти. Но большинство нормальных программ на современных языках программирования в такой ситуации сначала будут запускать свои сборщики мусора, скидывать буфферы, и т.д. В общем - начнут себя вести как приличный жилец коммунальной жилплощади.
