Java HotSpot (TM) 64-Bit Sunucu VM uyarısı: MaxPermSize seçeneği yok sayılıyor


133

Maven ile bir Java 8 projesi oluştururken:

mvn clean package

Bu mesajı alıyorum:

Java HotSpot (TM) 64-Bit Sunucu VM uyarısı: MaxPermSize = 128m seçeneği yok sayılıyor; destek 8.0'da kaldırıldı

Bu mesaj nasıl kaldırılır?



1
Halihazırda çalışan bir IDEA örneğiniz olabilir. [1]: stackoverflow.com/a/20553943/3741698
David Hackro

Yanıtlar:


163

JDK 8 için Uyumluluk Kılavuzu , Java 8'de komut satırı bayrağının MaxPermSizekaldırıldığını söylüyor . Bunun nedeni, kalıcı neslin sıcak nokta yığınından kaldırılması ve yerel belleğe taşınmasıdır. Dolayısıyla, bu mesajı kaldırmak için MAVEN_OPTS Ortam Kullanıcı Değişkenini düzenleyin :

Java 7

MAVEN_OPTS -Xmx512m -XX:MaxPermSize=128m

Java 8

MAVEN_OPTS -Xmx512m

13
Bunun nedeni, tüm PermGen alanının Oracle'ın JRE 8, AFAIK'inde kaldırılmış olmasıdır.
Puce

1
Birisi bunu nasıl yapacağını bilmiyorsa - sudo gedit ~/.profilecevabın satırını oraya ekleyin ve dosyayı kaydedin.
gotqn

Bu seçeneği ~ / .bashrc dosyasında ayarladım
paka

@gotqn sudoAna klasörünüzdeki bir dosyayı neden düzenleyeceksiniz? Bana çok tuhaf bir çalışma gibi geliyor.
Per Lundberg

22

JDK 8 HotSpot JVM artık sınıf meta veri gösterimi için yerli bellek kullanıyor ve denir Metaspace .

Kalıcı nesil kaldırıldı. PermSizeVe MaxPermSizegöz ardı edilir ve komut satırında varsa bir uyarı verilir.


Bu, soruyu yalnızca dolaylı olarak yanıtlar ... Cevap, "uyarıyı kaldırmak için bayrakları kaldırın". Gibi kolay anlaşılır yorumlar @ tarafından Ohad-Schneider ortaya koymaktadır hiç yoktur kimse onlar için tek yedek.
conny

10
-XX:MaxPermSize=size

Maksimum kalıcı oluşturma alanı boyutunu (bayt cinsinden) ayarlar. Bu seçenek, JDK 8'de kullanımdan kaldırılmış ve -XX:MaxMetaspaceSizeseçenek tarafından değiştirilmiştir .

-XX:PermSize=size

Aşıldığında çöp toplamayı tetikleyen kalıcı üretime ayrılan alanı (bayt cinsinden) ayarlar. Bu seçenek, JDK 8'de kullanımdan kaldırılmış ve -XX:MetaspaceSizeseçenek tarafından değiştirilmiştir .


12
Ben bunu daha önceki kullanımları geçiş gerektiğini ima çünkü bu downvoted düşünüyorum MaxPermGenile MaxMetaSpaceSizerolleri pratikte tersine beri, hangi yanıltıcıdır. Java 8 sınıfı metadata alanı 32 / 64MB ile sınırlı olan ve arttırmak için MaxPerGenkullanılan PermGen'de bulunuyordu . Java 8'den başlayarak, PermGen artık yok ve sınıf meta veri alanı sınırsız, bu nedenle boyut aslında onu azaltmak için kullanılıyor . Daha fazla bilgi için bkz: stackoverflow.com/a/31463972/67824MaxMetaspace
Ohad Schneider

8

JBoss EAP 6.4'te, sunucuya sağ tıklayın ve VM argümanı altında başlatma yapılandırmasını açın.

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

güncelle

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

Bu sorununu çözecektir.


1

Java 8 ile Linux'ta mvn komut satırı (sürüm 3.3.3) çalıştırırken benzer bir mesaj aldım. Maven script / $ MAVEN-HOME / bin / mvn'yi açarak aşağıdaki satırı buldum

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

$ MAVEN_PROJECTBASEDIR varsayılan olarak ana dizininizdir. Dolayısıyla, göz atabileceğiniz iki yer, önce $ MAVEN_PROJECTBASEDIR / .mvn / jvm.config dosyasıdır. İkinci olarak, muhtemelen MAVEN_OPTS ortam değişkenini oluşturan dosyalara bakın. Aday dosyalar .bashrc, .bash_profile, .profile ve bunların içerdiği / etc / profile, /etc/bash.bashrc gibi dosyalardır.

Buldum

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

sistemimde .bashrc olarak değiştirin

export MAVEN_OPTS="-Xmx512m"

sorun çözüldü


1

birisinin hala bu tür bir mesaj alması durumunda. Bunun nedeni maven projesini çalıştırırken JVM bağımsız değişkeni eklemenizdir. Maven ile ilgili olduğu için kontrol edebilirsiniz.pom.xml dosyanızı projeniz üzerinden .

bu satırı bul <argLine>...</argLine>, projemde aşağıda tartışmam var

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

Eğer değiştirmeniz gerekir MaxPermSizeolarak argüman -Xms123m -Xmx123mberi, MaxPermSizezaten kaldırılmış olduğu ve JVM yapılandırmasına herhangi yürürlüğe girmesi alışkanlık:

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

-1

Lütfen bu sorunu çözmek için şuraya kurulu JDK yolunu ayarladık

standalone.conf

JBoss \ Wildfly Sunucusunun bin klasörünün altındaki dosya . Bunu çözmek için aşağıdaki adımları uyguluyoruz:

  1. Standlone.conf dosyasını açınJBoss_or_wildfly \ bin klasörünün altındaki dosyasını
  2. Bu dosya içinde #JAVA_HOME öğesini bulun metnini .
  3. # Karakterini kaldırın ve kurulu JDK yolunuzu JAVA_HOME = "C: \ Program Files \ Java \ jdk1.8.0_65" olarak ayarlayın, umarım bu sorununuzu çözecektir Teşekkürler

Asıl sorun bir maven projesinde. JBoss ile ilgisi yok.
Boris

-5

Eclipse kullanıcıları için ...

Çalıştır'ı tıklayın -> Yapılandırmayı çalıştır -> bunlar -> 1.6 veya 1.7 için Alternatif JRE'yi ayarlayın

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.