คำเตือน Java HotSpot (TM) 64-Bit Server VM: ละเว้นอ็อพชัน MaxPermSize


133

เมื่อสร้างโปรเจ็กต์ Java 8 ด้วย Maven:

mvn clean package

ฉันได้รับข้อความนี้:

คำเตือน Java HotSpot (TM) 64-Bit Server VM: ละเว้นอ็อพชัน MaxPermSize = 128m; การสนับสนุนถูกลบออกใน 8.0

จะลบข้อความนี้ได้อย่างไร?


2
ดูbugs.java.com/bugdatabase/view_bug.do?bug_id=6964458สำหรับคำอธิบายแบบเต็ม
Dag

1
คุณอาจมี IDEA ทำงานอยู่แล้วหนึ่งอินสแตนซ์ [1]: stackoverflow.com/a/20553943/3741698
David Hackro

คำตอบ:


163

คู่มือความเข้ากันได้สำหรับ JDK 8ระบุว่าใน Java 8 แฟล็กบรรทัดคำสั่งMaxPermSizeถูกลบออก เหตุผลก็คือการสร้างแบบถาวรถูกลบออกจากฮีปฮอตสปอตและถูกย้ายไปยังหน่วยความจำดั้งเดิม ดังนั้นในการลบข้อความนี้ให้แก้ไขตัวแปรผู้ใช้สภาพแวดล้อมMAVEN_OPTS :

จาวา 7

MAVEN_OPTS -Xmx512m -XX:MaxPermSize=128m

จาวา 8

MAVEN_OPTS -Xmx512m

13
และเหตุผลก็คือพื้นที่ PermGen ทั้งหมดถูกลบออกใน JRE 8 ของ Oracle, AFAIK
Puce

1
หากมีคนไม่ทราบวิธีการทำ - sudo gedit ~/.profileให้เพิ่มบรรทัดจากคำตอบที่นั่นและบันทึกไฟล์
gotqn

ฉันมีตัวเลือกนี้ตั้งอยู่ในไฟล์ ~ / .bashrc
paka

@gotqn ทำไมคุณถึงsudoแก้ไขไฟล์ในโฮมโฟลเดอร์ของคุณ? ดูเหมือนการปฏิบัติที่แปลกมากสำหรับฉัน
Per Lundberg

22

JDK 8 HotSpot JVMขณะนี้การใช้หน่วยความจำสำหรับการแสดงพื้นเมืองของเมตาดาต้าชั้นเรียนและจะเรียกว่าMetaspace Metaspace

รุ่นถาวรถูกลบออก PermSizeและ MaxPermSizeจะถูกละเลยและคำเตือนที่ออกถ้าพวกเขามีอยู่ในบรรทัดคำสั่ง


นี่เป็นการตอบคำถามโดยอ้อมเท่านั้น ... คำตอบคือ "ลบแฟล็กเพื่อลบคำเตือน" ดังที่ความคิดเห็นเชิงลึกของ @ ohad-schneider เปิดเผยว่าไม่มีใครมาแทนที่พวกเขาได้
Conny

10
-XX:MaxPermSize=size

ตั้งค่าขนาดพื้นที่การสร้างถาวรสูงสุด (เป็นไบต์) ตัวเลือกนี้เลิกใช้แล้วใน JDK 8 และถูกแทนที่ด้วย-XX:MaxMetaspaceSizeตัวเลือก

-XX:PermSize=size

ตั้งค่าช่องว่าง (เป็นไบต์) ที่จัดสรรให้กับการสร้างแบบถาวรที่ทริกเกอร์การรวบรวมขยะหากเกิน ตัวเลือกนี้เลิกใช้แล้วในJDK 8และถูกแทนที่ด้วย-XX:MetaspaceSizeตัวเลือก


12
ผมคิดว่านี่คือการ downvoted เพราะมันหมายความว่าคุณควรเปลี่ยนการใช้งานก่อนหน้านี้MaxPermGenด้วยMaxMetaSpaceSizeซึ่งจะทำให้เข้าใจผิดเนื่องจากบทบาทของพวกเขาได้กลับรายการจริง ก่อนพื้นที่ข้อมูลเมตาของคลาส Java 8 อยู่ใน PermGen ซึ่งถูก จำกัด โดย 32 / 64MB และMaxPerGenถูกใช้เพื่อเพิ่มพื้นที่ เริ่มต้นจาก Java 8 แต่ PermGen ไม่มากและข้อมูลระดับพื้นที่ไม่ จำกัด ดังนั้นMaxMetaspaceขนาดจริงที่ใช้ลดความมัน ดูข้อมูลเพิ่มเติมได้ที่: stackoverflow.com/a/31463972/67824
Ohad Schneider

8

ใน JBoss EAP 6.4 ให้คลิกขวาที่เซิร์ฟเวอร์และเปิดการกำหนดค่าการเปิดตัวภายใต้อาร์กิวเมนต์ VM ที่คุณจะพบ

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

อัปเดตเป็น

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

วิธีนี้จะช่วยแก้ปัญหาของคุณได้


1

ฉันได้รับข้อความที่คล้ายกันเมื่อเรียกใช้บรรทัดคำสั่ง mvn (เวอร์ชัน 3.3.3) บน Linux ด้วย Java 8 เมื่อเปิดสคริปต์ maven / $ MAVEN-HOME / bin / mvn พบบรรทัดต่อไปนี้

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

โดยที่ $ MAVEN_PROJECTBASEDIR โดยค่าเริ่มต้นคือโฮมไดเร็กทอรีของคุณ คุณสามารถดูสถานที่สองแห่งได้อันดับแรกคือไฟล์ $ MAVEN_PROJECTBASEDIR / .mvn / jvm.config หากมีอยู่ ประการที่สองดูไฟล์ที่อาจตั้งค่าตัวแปรสภาพแวดล้อม MAVEN_OPTS ไฟล์ผู้สมัครคือ. bashrc, .bash_profile, .profile และไฟล์เหล่านั้นรวมอยู่ด้วยเช่น / etc / profile, /etc/bash.bashrc

ฉันอยู่

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

ใน. bashrc ในระบบของฉันเปลี่ยนเป็น

export MAVEN_OPTS="-Xmx512m"

ปัญหาได้รับการแก้ไข


1

ในกรณีที่บางคนยังคงได้รับข้อความประเภทนี้ เกิดขึ้นเนื่องจากคุณเพิ่มอาร์กิวเมนต์ JVM เมื่อเรียกใช้โครงการ maven เนื่องจากมันเกี่ยวข้องกับ maven คุณสามารถตรวจสอบไฟล์pom.xmlไฟล์ของคุณในโครงการของคุณได้

ค้นหาบรรทัดนี้<argLine>...</argLine>ในโครงการของฉันฉันมีข้อโต้แย้งด้านล่างด้วย

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

คุณควรแทนที่MaxPermSizeอาร์กิวเมนต์-Xms123m -Xmx123mเนื่องจากMaxPermSizeเลิกใช้แล้วและจะไม่ส่งผลใด ๆ กับการกำหนดค่า JVM ของคุณ:

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

-1

โปรดเพื่อแก้ปัญหานี้เราเพิ่งตั้งค่าพา ธ JDK ที่ติดตั้งไว้

standalone.conf

ซึ่งอยู่ภายใต้โฟลเดอร์binของเซิร์ฟเวอร์ JBoss \ Wildfly ในการแก้ปัญหานี้เราทำตามขั้นตอนต่อไปนี้:

  1. เปิดstandlone.confไฟล์ซึ่งอยู่ภายใต้โฟลเดอร์ JBoss_or_wildfly \ bin
  2. ภายในไฟล์นี้ค้นหาข้อความ#JAVA_HOME
  3. ลบอักขระ#และตั้งค่าเส้นทาง JDK ที่คุณติดตั้งเป็น JAVA_HOME = "C: \ Program Files \ Java \ jdk1.8.0_65" หวังว่านี่จะช่วยแก้ปัญหาของคุณได้ขอบคุณ

ปัญหาเดิมอยู่ในโครงการ maven มันไม่มีผลอะไรกับ JBoss
Boris

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.