Что вы знаете о OutOfMemoryError?
Область памяти, занимаемая
•
•
•
•
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
: Выбрасывается, когда нет возможности создавать новые потоки.