РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
719 of 1163 menu

Класс OutOfMemoryError

Класс OutOfMemoryError является подклассом класса Error и представляет собой серьезную ошибку, возникающую при исчерпании доступной памяти в куче Java. В отличие от исключений, данная ошибка обычно указывает на то, что приложение не может продолжать нормальную работу. Виртуальная машина Java выбрасывает эту ошибку, когда сборщик мусора не может освободить достаточно памяти для выделения нового объекта. Класс не имеет специфических методов, а использует унаследованные от Throwable методы для получения сообщения об ошибке и трассировки стека.

Синтаксис

public class OutOfMemoryError extends VirtualMachineError

Пример

Давайте рассмотрим пример, в котором мы намеренно пытаемся создать большое количество объектов, чтобы вызвать ошибку нехватки памяти. Обратите внимание, что данный пример может привести к зависанию или падению программы, поэтому запускайте его с осторожностью:

import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { List<byte[]> list = new ArrayList<>(); try { while (true) { list.add(new byte[1024 * 1024]); } } catch (OutOfMemoryError e) { System.out.println("Caught OutOfMemoryError: " + e.getMessage()); } } }

Результат выполнения кода (может отличаться в зависимости от настроек JVM):

"Caught OutOfMemoryError: Java heap space"

Пример

Давайте посмотрим, как можно перехватить ошибку и вывести информацию о ней, используя метод printStackTrace:

public class Main { public static void main(String[] args) { try { int[] array = new int[Integer.MAX_VALUE]; } catch (OutOfMemoryError e) { System.out.println("Error type: " + e.getClass().getName()); System.out.println("Error message: " + e.getMessage()); } } }

Результат выполнения кода:

"Error type: java.lang.OutOfMemoryError" "Error message: Requested array size exceeds VM limit"

Смотрите также

  • класс Error,
    который является родительским классом для всех ошибок
  • класс StackOverflowError,
    который возникает при переполнении стека
  • метод getMessage,
    который возвращает сообщение об ошибке
  • метод printStackTrace,
    который выводит трассировку стека ошибки
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить