Peringatan Java HotSpot (TM) 64-Bit Server VM: mengabaikan opsi MaxPermSize


133

Saat membangun proyek Java 8 dengan Maven:

mvn clean package

Saya menerima pesan ini:

Peringatan Java HotSpot (TM) 64-Bit Server VM: opsi abaikan MaxPermSize = 128m; dukungan telah dihapus di 8.0

Bagaimana cara menghapus pesan ini?



1
Anda mungkin sudah menjalankan satu instance IDEA. [1]: stackoverflow.com/a/20553943/3741698
David Hackro

Jawaban:


163

Panduan Kompatibilitas untuk JDK 8 mengatakan bahwa di Java 8 bendera baris perintah MaxPermSizetelah dihapus. Alasannya adalah bahwa generasi permanen telah dihapus dari tumpukan hotspot dan dipindahkan ke memori asli. Jadi untuk menghapus pesan ini, edit MAVEN_OPTS Variabel Pengguna Lingkungan:

Java 7

MAVEN_OPTS -Xmx512m -XX:MaxPermSize=128m

Java 8

MAVEN_OPTS -Xmx512m

13
Dan alasannya adalah bahwa seluruh ruang PermGen telah dihapus di Oracle JRE 8, AFAIK.
Puce

1
Jika seseorang tidak tahu bagaimana melakukan ini - sudo gedit ~/.profile, tambahkan baris dari jawaban di sana dan simpan file.
Gotqn

Opsi ini saya atur dalam file ~ / .bashrc
paka

@ gotqn Mengapa Anda sudomengedit file di folder rumah Anda? Sepertinya latihan yang sangat aneh bagi saya.
Per Lundberg

22

The JDK 8 HotSpot JVM sekarang menggunakan memori asli untuk representasi metadata kelas dan disebut Metaspace .

Generasi permanen telah dihapus. Itu PermSizedan MaxPermSizediabaikan dan peringatan dikeluarkan jika mereka ada di baris perintah.


Ini hanya secara tidak langsung menjawab pertanyaan ... Jawabannya adalah "hapus bendera untuk menghapus peringatan". Seperti yang diungkapkan oleh komentar dari @ ohad-schneider, tidak ada satu pun pengganti untuk mereka.
conny

10
-XX:MaxPermSize=size

Menetapkan ukuran ruang pembangkitan permanen maksimum (dalam byte). Opsi ini sudah tidak digunakan lagi dalam JDK 8, dan digantikan oleh -XX:MaxMetaspaceSizeopsi.

-XX:PermSize=size

Mengatur ruang (dalam byte) yang dialokasikan untuk generasi permanen yang memicu pengumpulan sampah jika terlampaui. Opsi ini sudah tidak digunakan lagi dalam JDK 8 , dan digantikan oleh -XX:MetaspaceSizeopsi.


12
Saya pikir ini downvoted karena menyiratkan bahwa Anda harus beralih menggunakan sebelumnya MaxPermGendengan MaxMetaSpaceSizeyang menyesatkan, karena peran mereka telah praktis terbalik. Sebelum Java 8, ruang metadata berada di PermGen yang dibatasi 32 / 64MB, dan MaxPerGendigunakan untuk meningkatkannya . Mulai dari Java 8, PermGen tidak lebih dan ruang metadata kelas tidak terbatas, jadi MaxMetaspaceukuran sebenarnya digunakan untuk menguranginya . Untuk informasi lebih lanjut, lihat: stackoverflow.com/a/31463972/67824
Ohad Schneider

8

Di JBoss EAP 6.4, klik kanan pada server dan buka konfigurasi peluncuran di bawah argumen VM Anda akan menemukan

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

perbarui untuk

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

ini akan menyelesaikan masalah Anda.


1

Saya mendapat pesan serupa ketika menjalankan command line mvn (versi 3.3.3) di Linux dengan Java 8. Dengan membuka skrip maven / $ MAVEN-HOME / bin / mvn, temukan baris berikut

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

Di mana $ MAVEN_PROJECTBASEDIR secara default adalah direktori home Anda. Jadi, dua tempat yang dapat Anda lihat, pertama adalah file $ MAVEN_PROJECTBASEDIR / .mvn / jvm.config jika ada. Kedua, lihat file yang mungkin mengatur variabel lingkungan MAVEN_OPTS. File kandidat adalah .bashrc, .bash_profile, .profile dan file-file yang disertakan oleh mereka seperti / etc / profile, /etc/bash.bashrc

Saya berada

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

di .bashrc di sistem saya, ubah ke

export MAVEN_OPTS="-Xmx512m"

masalah terselesaikan


1

seandainya seseorang masih mendapatkan pesan semacam ini. Itu terjadi karena Anda menambahkan argumen JVM ketika menjalankan proyek pakar. Karena ini terkait dengan maven, Anda dapat memeriksa pom.xmlfile di proyek Anda.

temukan baris ini <argLine>...</argLine>, pada proyek saya, saya juga punya argumen di bawah ini

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

Anda harus mengganti MaxPermSizeargumen sebagai -Xms123m -Xmx123m, karena MaxPermSizesudah usang dan tidak akan berpengaruh pada konfigurasi JVM Anda:

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

-1

Untuk mengatasi masalah ini, kami baru saja menetapkan jalur JDK yang terpasang di

standalone.conf

file yang di bawah folder bin JBoss \ Wildfly Server. Untuk mengatasi ini kami lakukan langkah-langkah berikut:

  1. Buka file standlone.conf yang berada di bawah folder JBoss_or_wildfly \ bin
  2. Dalam file ini temukan teks #JAVA_HOME .
  3. Hapus karakter # dan setel path JDK Anda yang terinstal sebagai JAVA_HOME = "C: \ Program Files \ Java \ jdk1.8.0_65" Semoga ini akan menyelesaikan masalah Anda Terima kasih

Masalah aslinya ada di proyek pakar. Itu tidak ada hubungannya dengan JBoss.
Boris

-5

Untuk pengguna Eclipse ...

Klik Run -> Run configuration -> are -> atur Alternate JRE untuk 1.6 atau 1.7

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.