Ostrzeżenie dotyczące maszyny wirtualnej serwera 64-bitowego Java HotSpot (TM): ignorowanie opcji MaxPermSize

136

Podczas budowania projektu Java 8 za pomocą Maven:

mvn clean package

Otrzymuję tę wiadomość:

Ostrzeżenie dotyczące maszyny wirtualnej serwera 64-bitowego Java HotSpot (TM): ignorowanie opcji MaxPermSize = 128m; wsparcie zostało usunięte w wersji 8.0

Jak usunąć tę wiadomość?

Boris
źródło
1
Być może masz już uruchomione jedno wystąpienie IDEA. [1]: stackoverflow.com/a/20553943/3741698
David Hackro

Odpowiedzi:

167

Przewodnik zgodności dla JDK 8 mówi, że w Javie 8 flaga wiersza poleceń MaxPermSizezostała usunięta. Powodem jest to, że trwałe generowanie zostało usunięte ze stosu punktu aktywnego i przeniesione do pamięci natywnej. Aby usunąć tę wiadomość, edytuj zmienną użytkownika środowiska MAVEN_OPTS :

Java 7

MAVEN_OPTS -Xmx512m -XX:MaxPermSize=128m

Java 8

MAVEN_OPTS -Xmx512m
Boris
źródło
13
Powodem jest to, że cała przestrzeń PermGen została usunięta w Oracle JRE 8, AFAIK.
Puce,
1
Jeśli ktoś nie wie jak to zrobić - sudo gedit ~/.profiledodaj tam linię z odpowiedzi i zapisz plik.
gotqn
Mam tę opcję ustawioną w pliku ~ / .bashrc
paka
@gotqn Dlaczego miałbyś sudoedytować plik w swoim katalogu domowym? Wydaje mi się, że to bardzo dziwna praktyka.
Per Lundberg
22

JDK 8 HotSpot JVM jest teraz za pomocą natywnego pamięci dla reprezentacji metadanych klasy i nazywa Metaspace .

Stałe generowanie zostało usunięte. Elementy PermSizei MaxPermSizesą ignorowane, a jeśli są obecne w wierszu poleceń, wyświetlane jest ostrzeżenie.

Martin Seeler
źródło
To tylko pośrednio odpowiada na pytanie ... Odpowiedź brzmi: „usuń flagi, aby usunąć ostrzeżenie”. Jako wnikliwy komentarz przez @ Ohad-Schneider ujawnia, nie istnieje jeden pojedynczy zamiennikiem dla nich.
conny
10
-XX:MaxPermSize=size

Ustawia maksymalny stały rozmiar przestrzeni generowania (w bajtach). Ta opcja została wycofana w JDK 8 i zastąpiona przez -XX:MaxMetaspaceSizeopcję.

-XX:PermSize=size

Ustawia miejsce (w bajtach) przydzielone do trwałego generowania, które wyzwala wyrzucanie elementów bezużytecznych, jeśli zostanie przekroczone. Ta opcja została wycofana w JDK 8 i zastąpiona przez -XX:MetaspaceSizeopcję.

mama...
źródło
12
Myślę, że zostało to odrzucone, ponieważ oznacza to, że należy zmienić poprzednie zastosowania, MaxPermGenz MaxMetaSpaceSizektórymi jest mylące, ponieważ ich role praktycznie się odwróciły. Wcześniej przestrzeń metadanych klasy Java 8 znajdowała się w PermGen, która była ograniczona do 32/64 MB i MaxPerGenbyła używana do jej zwiększenia . Począwszy od Java 8, PermGen już nie istnieje, a przestrzeń metadanych klas jest nieograniczona, więc MaxMetaspacerozmiar jest faktycznie używany do jej zmniejszenia . Aby uzyskać więcej informacji, patrz: stackoverflow.com/a/31463972/67824
Ohad Schneider,
8

W JBoss EAP 6.4 kliknij prawym przyciskiem myszy serwer i otwórz konfigurację uruchamiania pod argumentem VM, który znajdziesz

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

zaktualizuj do

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

to rozwiąże twój problem.

Amit
źródło
1

Otrzymałem podobny komunikat podczas uruchamiania wiersza poleceń mvn (wersja 3.3.3) w systemie Linux z Javą 8. Otwierając skrypt maven / $ MAVEN-HOME / bin / mvn, znalazłem następujący wiersz

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

Gdzie $ MAVEN_PROJECTBASEDIR domyślnie jest twoim katalogiem domowym. Więc możesz zajrzeć w dwa miejsca, najpierw jest to plik $ MAVEN_PROJECTBASEDIR / .mvn / jvm.config, jeśli istnieje. Po drugie, spójrz na pliki, które mogą ustawić zmienną środowiskową MAVEN_OPTS. Pliki kandydujące to .bashrc, .bash_profile, .profile i te pliki, które zawierają, takie jak / etc / profile, /etc/bash.bashrc

Zlokalizowałem

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

w .bashrc w moim systemie, zmień go na

export MAVEN_OPTS="-Xmx512m"

problem rozwiązany

Jonathan L.
źródło
1

na wypadek, gdyby ktoś nadal otrzymał tego rodzaju wiadomość. Dzieje się tak, ponieważ dodajesz argument JVM podczas uruchamiania projektu maven. Ponieważ jest to związane z mavenem, możesz sprawdzić swój pom.xmlplik w swoim projekcie.

znajdź tę linię <argLine>...</argLine>, w moim projekcie mam również argument poniżej

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

powinieneś zamienić MaxPermSizeargument jako -Xms123m -Xmx123m, ponieważ MaxPermSizejest już przestarzały i nie będzie miał żadnego wpływu na konfigurację JVM:

<argLine>-Xms512m -Xmx512m  -XX:+TieredCompilation -XX:TieredStopAtLevel=1</argLine>
satrioaditya
źródło
-1

Aby rozwiązać ten problem, właśnie ustawiliśmy zainstalowaną ścieżkę JDK w

standalone.conf

plik, który znajduje się w folderze bin JBoss \ Wildfly Server. Aby rozwiązać ten problem, wykonujemy następujące kroki:

  1. Otwórz standlone.conf plik, który w folderze bin \ JBoss_or_wildfly
  2. W tym pliku znajdź tekst #JAVA_HOME .
  3. Usuń znak # i ustaw zainstalowaną ścieżkę JDK jako JAVA_HOME = "C: \ Program Files \ Java \ jdk1.8.0_65" Mam nadzieję, że to rozwiąże problem. Dziękujemy
Salahin Rocky
źródło
Pierwotny problem dotyczy projektu maven. Nie ma to nic wspólnego z JBoss.
Boris
-5

Dla użytkowników Eclipse ...

Kliknij Uruchom -> Uruchom konfigurację -> są -> ustaw alternatywne środowisko JRE dla wersji 1.6 lub 1.7

Raja Rajamani
źródło