Проблема OutOfMemory в Tomcat 8 metaspace - PullRequest
0 голосов
/ 11 мая 2019

Я использую tomcat 8 с jdk 8. Для Metaspace установлено значение 1 ГБ, что, на мой взгляд, достаточно, я получаю исключение OutOfMemoryError.Я попытался проверить класс (SSLEngineImpl.java:1796), чтобы узнать, что вызывает это, но кажется, что строка ошибки не относится к какой-либо загрузке класса.Может ли кто-нибудь помочь в этом, пожалуйста?

[http-nio-8202-exec-2] org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun 
 java.lang.OutOfMemoryError: Metaspace
    at sun.security.ssl.SSLEngineImpl.recvAlert(SSLEngineImpl.java:1796)
    at sun.security.ssl.SSLEngineImpl.readRecord(SSLEngineImpl.java:1083)
    at sun.security.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:907)
    at sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:781)
    at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:624)
    at org.apache.tomcat.util.net.SecureNioChannel.handshakeUnwrap(SecureNioChannel.java:350)
    at org.apache.tomcat.util.net.SecureNioChannel.handshake(SecureNioChannel.java:208)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1496)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)

1 Ответ

0 голосов
/ 11 мая 2019

Из документов

Исключение в потоке имя_потока: java.lang.OutOfMemoryError: Причина Metaspace: метаданные класса Java (виртуальная машина внутренняя представление класса Java) размещается в родной памяти (здесь называется метапространством). Когда мета-пространство метаданных класса исчерпано, исключение с MetaSpace деталь "" java.lang.OutOfMemoryError выброшены. Количество метапространства, доступного для метаданных класса, составляет MaxMetaSpaceSize ограничен параметрами, указанными в команде линия . Выдается исключение с деталями MaxMetaSpaceSize, если превышен объем собственной памяти, необходимый для метаданных класса .MetaSpacejava.lang.OutOfMemoryError Действие: если оно MaxMetaSpaceSize, установить в командной строке, увеличить его значение. MetaSpace выделен из того же адресного пространства, что и куча Java. Уменьшение размера Куча Java MetaSpace увеличивает доступное ему пространство. Этот компромисс выполняется только тогда, когда в куче Java есть дополнительное свободное пространство. Следующий «Вне места подкачки», пожалуйста, обратитесь к «обработке» детали сообщение.

В Java 8 и более поздних версиях мы можем установить начальный и максимальный размер Metaspace с помощью следующих команд:

-XX:MetaspaceSize=N  - sets the initial (and minimum size) of the Metaspace.

-XX:MaxMetaspaceSize=N  - sets the maximum size of the Metaspace.
...