Как разрешаются проблемы дефицита памяти и исключения out of memory exception
OutOfMemoryError
выбрасывается, когда виртуальная машина Java не может создать (разместить) объект из-за нехватки памяти, а сборщик мусора не может высвободить достаточное её количество.
Область памяти, занимаемая java процессом, состоит из нескольких частей. Тип OutOfMemoryError
зависит от того, в какой из них не хватило места:
java.lang.OutOfMemoryError: Java heap space
: Не хватает места в куче, а именно, в области памяти в которую помещаются объекты, создаваемые в приложении программно. Обычно проблема кроется в утечке памяти. Размер задается параметрами-Xms
и-Xmx
.java.lang.OutOfMemoryError: PermGen space
: (до версии Java 8) Данная ошибка возникает при нехватке места в Permanent области, размер которой задается параметрами-XX:PermSize
и-XX:MaxPermSize
.java.lang.OutOfMemoryError: GC overhead limit exceeded
: Данная ошибка может возникнуть как при переполнении первой, так и второй областей. Связана она с тем, что памяти осталось мало и сборщик мусора постоянно работает, пытаясь высвободить немного места. Данную ошибку можно отключить с помощью параметра-XX:-UseGCOverheadLimit
.java.lang.OutOfMemoryError: unable to create new native thread
: Выбрасывается, когда нет возможности создавать новые потоки.
Oct. 22, 2023, Источник