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?

Boris
sumber
2
Lihat bugs.java.com/bugdatabase/view_bug.do?bug_id=6964458 untuk deskripsi lengkap
Dag
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
Boris
sumber
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.

Martin Seeler
sumber
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.

mama...
sumber
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.

Amit
sumber
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

Jonathan L.
sumber
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>
satrioaditya
sumber
-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
Salahin Rocky
sumber
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

Raja Rajamani
sumber