Попередження 64-бітного сервера VM-сервера Java HotSpot (TM): ігнорування опції MaxPermSize


133

Під час створення проекту Java 8 з Maven:

mvn clean package

Я отримую це повідомлення:

64-бітове попередження VM для сервера Java HotSpot (TM): ігнорування опції MaxPermSize = 128 м; підтримку було видалено в 8.0

Як видалити це повідомлення?


2
Дивіться bugs.java.com/bugdatabase/view_bug.do?bug_id=6964458 для повного опису
Dag

1
Можливо, у вас вже є один екземпляр IDEA. [1]: stackoverflow.com/a/20553943/3741698
Девід Hackro

Відповіді:


163

Посібник із сумісності JDK 8 говорить, що в Java 8 прапор командного рядка MaxPermSizeвидалено. Причина полягає в тому, що постійне покоління було вилучене з купи гарячої точки та переміщено до рідної пам’яті. Отже, щоб видалити це повідомлення, відредагуйте змінну користувача MAVEN_OPTS Environment:

Java 7

MAVEN_OPTS -Xmx512m -XX:MaxPermSize=128m

Java 8

MAVEN_OPTS -Xmx512m

13
Причина в тому, що весь простір PermGen було видалено в JRE 8 Oracle, AFAIK.
Пуче

1
Якщо хтось не знає, як це зробити - sudo gedit ~/.profileдодайте рядок з відповіді там і збережіть файл.
gotqn

У мене цей параметр встановлений у файлі ~ / .bashrc
paka

@gotqn Навіщо sudoредагувати файл у домашній папці? Здається, це дуже дивна практика для мене.
Пер Лундберг

22

Тепер JVM JDK HotSpot використовує вбудовану пам'ять для представлення метаданих класу і називається Metaspace .

Постійне покоління вилучено. PermSizeІ MaxPermSizeігноруються , і видається попередження , якщо вони присутні в командному рядку.


Це лише опосередковано відповідає на питання ... Відповідь - "зняти прапори, щоб зняти попередження". Як проникливий коментар по @ Ohad-Шнайдер показує, що немає один одиночної заміни для них.
conny

10
-XX:MaxPermSize=size

Встановлює максимальний розмір простору постійного покоління (у байтах). Цей параметр був застарілий у JDK 8 та заміщений -XX:MaxMetaspaceSizeваріантом.

-XX:PermSize=size

Встановлює простір (у байтах), виділений постійному поколінню, яке запускає збір сміття, якщо його перевищено. Цей параметр був застарілий у JDK 8 та заміщений -XX:MetaspaceSizeваріантом.


12
Я думаю , що це було downvoted , тому що це означає , що ви повинні перемкнути попередні використання MaxPermGenз MaxMetaSpaceSizeяких вводить в оману, так як їх ролі практично навпаки. До цього простір метаданих класу Java 8 проживав у PermGen, який був обмежений 32 / 64MB, і MaxPerGenйого використовували для його збільшення . Починаючи з Java 8, PermGen більше не є, а простір метаданих класу необмежений, тому MaxMetaspaceрозмір насправді використовується для зменшення . Для отримання додаткової інформації дивіться: stackoverflow.com/a/31463972/67824
Охад Шнайдер

8

У JBoss EAP 6.4 клацніть правою кнопкою миші на сервері та відкрийте конфігурацію запуску під аргументом VM, який ви знайдете

{-Dprogram.name=JBossTools: jboss-eap" -server -Xms1024m -Xmx1024m -XX:MaxPermSize=256m}

оновити його до

{-Dprogram.name=JBossTools: JBoss 6.4" -server -Xms512m -Xmx512m}

це вирішить вашу проблему.


1

Я отримав подібне повідомлення під час запуску командного рядка mvn (версія 3.3.3) в Linux з Java 8. Відкривши сценарій maven / $ MAVEN-HOME / bin / mvn, знайшов наступний рядок

MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"

Де $ MAVEN_PROJECTBASEDIR за замовчуванням - ваш домашній каталог. Отже, ви можете подивитися два місця, спочатку - файл $ MAVEN_PROJECTBASEDIR / .mvn / jvm.config, якщо він існує. По-друге, подивіться на файли, які, можливо, налаштовують змінну середовища MAVEN_OPTS. Файлами-кандидатами є .bashrc, .bash_profile, .profile та ті файли, що входять до них, такі як / etc / profile, /etc/bash.bashrc

Я знаходився

export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=256m"

в .bashrc в моїй системі, змініть його на

export MAVEN_OPTS="-Xmx512m"

питання вирішено


1

на випадок, якщо хтось таки отримає таке повідомлення. Це відбувається тому, що ви додаєте аргумент JVM під час запуску проекту Maven. Оскільки це пов'язано з maven, ви можете перевірити pom.xmlфайл у своєму проекті.

знайдіть цей рядок <argLine>...</argLine>, у моєму проекті я також маю аргументи нижче

<argLine>-Xmx1024m -XX:MaxPermSize=512m -XX:+TieredCompilation -XX:TieredStopAtLevel=1</argLine>

Вам слід замінити MaxPermSizeаргумент як -Xms123m -Xmx123m, оскільки MaxPermSizeвін уже застарів і не матиме жодного впливу на конфігурацію JVM:

<argLine>-Xms512m -Xmx512m  -XX:+TieredCompilation -XX:TieredStopAtLevel=1</argLine>

-1

Будь ласка, щоб вирішити цю проблему, ми просто встановили встановлений шлях до JDK

standalone.conf

файл, який знаходиться у папці bin сервера JBoss \ Wildfly. Щоб вирішити це, ми робимо наступні кроки:

  1. Відкрийте файл standlone.conf, який знаходиться в папці JBoss_or_wildfly \ bin
  2. У цьому файлі знайдіть #JAVA_HOME текст.
  3. Видаліть символ # та встановіть встановлений шлях JDK як JAVA_HOME = "C: \ програмні файли \ Java \ jdk1.8.0_65" Сподіваюся, що це вирішить вашу проблему Спасибі

Оригінальна проблема - у проекті Maven. Це не має нічого спільного з JBoss.
Борис

-5

Для користувачів Eclipse ...

Клацніть Виконати -> Запустити конфігурацію -> є -> встановити альтернативну JRE для 1.6 або 1.7

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.