У нас есть свинг-приложение, которое выполняет сложную обработку данных. Одной из предпосылок для нашего программного обеспечения является то, что в каждом столбце не может быть слишком много уникальных значений. Если число является числовым, пользователю необходимо будет дискретизировать данные, прежде чем они смогут использовать наш инструмент.
К сожалению, используемые нами алгоритмы комбинаторно дороги в памяти в зависимости от количества уникальных значений в столбце. Прямо сейчас с неправильным набором данных приложение очень быстро исчерпает память. Перед выполнением одной из этих операций, для которой не хватило бы памяти, мы должны примерно рассчитать, сколько памяти потребуется для этой операции. Было бы неплохо, если бы мы могли проверить, сколько памяти использует приложение в данный момент, оценить, не исчерпается ли у приложения память, и показать сообщение об ошибке, а не исчерпать память. Используя java.lang.Runtime, мы можем найти свободную память, общую память и максимальную память, но действительно ли это полезно? Даже если кажется, что у нас недостаточно места в куче, может случиться так, что если мы подождем 30 миллисекунд, сборщик мусора запустится, и вдруг у нас будет более чем достаточно места для запуска нашей операции. Есть ли способ действительно предсказать, если у нас не хватит памяти?