В этой статье анализируются причины, по которым переполнение памяти программы Java более подробно. Поделитесь этим для всех для вашей ссылки. Специфика заключается в следующем:
Встречил онлайн -систему, сообщившая о java.lang.outofmemoryerror: ошибка пространства пермина, вам необходимо найти проблему. Я получил это давным -давно, и я действительно не помню этого сейчас, но это действительно очень интересный вопрос. Прежде всего, первая реакция состоит в том, чтобы добавить параметры -xx:+printgcdetails, чтобы посмотреть на конкретные журналы GC, но поскольку программа запускается Tomcat, я обеспокоен тем, что внутри инкапсуливается слишком много вещей.
Затем давайте посмотрим на причину этой ошибки.
Полное имя PertGen - это пространство постоянного поколения, которое ссылается на область постоянного сохранения памяти Различные области кучи. Места предшествует JSP. Если вы используете большое количество третьего партийного банка под вашим веб -приложением, размер превышает размер по умолчанию (4M) JVM, то это сообщение об ошибке будет сгенерировано.
Затем давайте увеличим начальный размер памяти пермин:
Добавьте в начале Linux в начале файла Catalina.sh: Копий код копирования следующим образом: java_opts = "-xms1024m -xmx1024m -xx: permsize = 256m -xx: maxpermsize = 256m" "" "" ""
Плюс в начале файла Catalina.bat под Windows: Копий код копирования следующим образом: Установить java_opts = -xms1024m -xmx1024m -xx: permsize = 256m -xx: maxpermssize = 256m
Затем мы все еще используем визуальную память для просмотра инструментов для поиска конкретных проблем. Предпочтительный инструмент для JDK6, конечно, является собственным инструментом. На этот раз я столкнулся с другой странной проблемой, то есть процесс Tomcat не мог быть найден после открытия инструмента анализа (было обнаружено, что JRE начался после этого, и этого должно быть достаточно, чтобы изменить его на JDK).
Поскольку местная область не разрешена, я могу подключиться удаленно, просто открыть JMX.
Как приведенное выше, добавьте код кода копии в начало файла java_opts of the Catalina.sh.sh или Catalina.bat следующим образом: -djava.rmi.server.hostname = 192.168.1.101-dcom.management.jmxremote.port. = 900 0-- dcom.sun.management.jmxremote.ssl = false -dcom.sun.management.jmxremote.authenticate = false
После запуска программы проверьте, правильно ли открыт порт, чтобы убедиться, что удаленное управление может быть подключено.
Я ленив здесь и выключаю аутентификацию. Эти настройки эффективны на моем локальном ПК, но этого недостаточно на сервере. Откройте jvisualvm, нажмите File-> Добавьте соединение JMX, а затем добавьте Localhost: 1000 и подключение.
После предыдущей программы, наблюдая за изменением памяти в течение определенного периода времени, я сосредоточился на ситуации PRM. Может случиться так, что размер памяти Perm не вступил в силу, поскольку инициализация по умолчанию Perm составляет 16 м, а максимум - 64 м, а фактическое количество занятий действительно может вызвать эту проблему. Полем Если вам нужно найти проблему дальше, вы также можете использовать BTRACE для просмотра места, где называется определенный метод. Это может позиционировать, выполняются ли определенные методы, как и ожидалось.
Есть надежда, что эта статья полезна для дизайна программы Java каждого.