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?
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?
Yanıtlar:
JDK 8 için Uyumluluk Kılavuzu , Java 8'de komut satırı bayrağının MaxPermSize
kaldı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
sudo gedit ~/.profile
cevabın satırını oraya ekleyin ve dosyayı kaydedin.
sudo
Ana klasörünüzdeki bir dosyayı neden düzenleyeceksiniz? Bana çok tuhaf bir çalışma gibi geliyor.
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ı. PermSize
Ve MaxPermSize
göz ardı edilir ve komut satırında varsa bir uyarı verilir.
-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:MaxMetaspaceSize
seç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:MetaspaceSize
seçenek tarafından değiştirilmiştir .
MaxPermGen
ile MaxMetaSpaceSize
rolleri 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 MaxPerGen
kullanı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
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ü
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 MaxPermSize
olarak argüman -Xms123m -Xmx123m
beri, MaxPermSize
zaten 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>
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:
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