В SO довольно много вопросов, связанных с ошибкой «OutOfMemoryError: Java Heap», но читая их, большинство, похоже, обсуждают, как увеличить размер кучи или профилировать приложение и обнаруживать утечки памяти.
Я работаю над проектом, который задействует анализ стоимости ветвления и связанного алгоритма.Для входных данных небольшого размера потенциальное количество решений для поиска увеличивается при O (n!).При определенном размере ввода n я столкнулся с «OutOfMemoryError», потому что частичные решения хранятся в очереди с приоритетами до тех пор, пока они не будут готовы к обработке, а огромное количество частичных решений в очереди заполняет память.Итак, я знаю, что у меня нет утечки памяти, и я не обязательно хочу увеличивать размер кучи.
Что я хотел бы сделать, это просто определить, когда память почти заполнена, а затем дать пользователю сообщение, в котором сообщается, что происходит и почему программа завершается (необязательно, чтобы программа продолжала работать приэта точка).Есть ли способ сделать это?Я посмотрел на пакет java.lang.management
, но он не имеет особого смысла для меня, и мне было трудно найти достойный пример кода.Любое объяснение или пример кода приветствуется.