Ваше приложение выделяет слишком много памяти.К сожалению, SIGKILL
не может быть обработано в вашем приложении;поэтому вам нужно быть активным (следя за тем, чтобы у вас никогда не было больше памяти, чем это возможно), а не реагировать (поймать сигнал и принять меры).Неясно, что именно вы подразумеваете под «слишком много данных для обработки» или как вы разбиваете проблему на более мелкие куски, поэтому я могу дать только некоторые общие советы.
Если вы можете разумно оценить требования к памятио проблеме, которую вы пытаетесь решить, вы можете предупредить пользователя и досрочно прервать работу, если размер проблемы больше, чем могут обработать узлы.Затем сценарий может уменьшить размер проблемы или увеличить количество узлов до тех пор, пока он не поместится в памяти.Если узлы являются общими или вы заранее не знаете объем доступной памяти, вы можете использовать такие функции, как get_phys_pages()
и get_avphys_pages
, чтобы определить это.