เมื่อสร้างโปรเจ็กต์ Java 8 ด้วย Maven:
mvn clean package
ฉันได้รับข้อความนี้:
คำเตือน Java HotSpot (TM) 64-Bit Server VM: ละเว้นอ็อพชัน MaxPermSize = 128m; การสนับสนุนถูกลบออกใน 8.0
จะลบข้อความนี้ได้อย่างไร?
เมื่อสร้างโปรเจ็กต์ Java 8 ด้วย Maven:
mvn clean package
ฉันได้รับข้อความนี้:
คำเตือน Java HotSpot (TM) 64-Bit Server VM: ละเว้นอ็อพชัน MaxPermSize = 128m; การสนับสนุนถูกลบออกใน 8.0
จะลบข้อความนี้ได้อย่างไร?
คำตอบ:
คู่มือความเข้ากันได้สำหรับ JDK 8ระบุว่าใน Java 8 แฟล็กบรรทัดคำสั่งMaxPermSize
ถูกลบออก เหตุผลก็คือการสร้างแบบถาวรถูกลบออกจากฮีปฮอตสปอตและถูกย้ายไปยังหน่วยความจำดั้งเดิม ดังนั้นในการลบข้อความนี้ให้แก้ไขตัวแปรผู้ใช้สภาพแวดล้อมMAVEN_OPTS :
จาวา 7
MAVEN_OPTS -Xmx512m -XX:MaxPermSize=128m
จาวา 8
MAVEN_OPTS -Xmx512m
sudo gedit ~/.profile
ให้เพิ่มบรรทัดจากคำตอบที่นั่นและบันทึกไฟล์
sudo
แก้ไขไฟล์ในโฮมโฟลเดอร์ของคุณ? ดูเหมือนการปฏิบัติที่แปลกมากสำหรับฉัน
JDK 8 HotSpot JVMขณะนี้การใช้หน่วยความจำสำหรับการแสดงพื้นเมืองของเมตาดาต้าชั้นเรียนและจะเรียกว่าMetaspace Metaspace
รุ่นถาวรถูกลบออก PermSize
และ MaxPermSize
จะถูกละเลยและคำเตือนที่ออกถ้าพวกเขามีอยู่ในบรรทัดคำสั่ง
-XX:MaxPermSize=size
ตั้งค่าขนาดพื้นที่การสร้างถาวรสูงสุด (เป็นไบต์) ตัวเลือกนี้เลิกใช้แล้วใน JDK 8 และถูกแทนที่ด้วย-XX:MaxMetaspaceSize
ตัวเลือก
-XX:PermSize=size
ตั้งค่าช่องว่าง (เป็นไบต์) ที่จัดสรรให้กับการสร้างแบบถาวรที่ทริกเกอร์การรวบรวมขยะหากเกิน ตัวเลือกนี้เลิกใช้แล้วในJDK 8และถูกแทนที่ด้วย-XX:MetaspaceSize
ตัวเลือก
MaxPermGen
ด้วยMaxMetaSpaceSize
ซึ่งจะทำให้เข้าใจผิดเนื่องจากบทบาทของพวกเขาได้กลับรายการจริง ก่อนพื้นที่ข้อมูลเมตาของคลาส Java 8 อยู่ใน PermGen ซึ่งถูก จำกัด โดย 32 / 64MB และMaxPerGen
ถูกใช้เพื่อเพิ่มพื้นที่ เริ่มต้นจาก Java 8 แต่ PermGen ไม่มากและข้อมูลระดับพื้นที่ไม่ จำกัด ดังนั้นMaxMetaspace
ขนาดจริงที่ใช้ลดความมัน ดูข้อมูลเพิ่มเติมได้ที่: stackoverflow.com/a/31463972/67824
ใน 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}
วิธีนี้จะช่วยแก้ปัญหาของคุณได้
ฉันได้รับข้อความที่คล้ายกันเมื่อเรียกใช้บรรทัดคำสั่ง 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"
ปัญหาได้รับการแก้ไข
ในกรณีที่บางคนยังคงได้รับข้อความประเภทนี้ เกิดขึ้นเนื่องจากคุณเพิ่มอาร์กิวเมนต์ 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>
โปรดเพื่อแก้ปัญหานี้เราเพิ่งตั้งค่าพา ธ JDK ที่ติดตั้งไว้
standalone.conf
ซึ่งอยู่ภายใต้โฟลเดอร์binของเซิร์ฟเวอร์ JBoss \ Wildfly ในการแก้ปัญหานี้เราทำตามขั้นตอนต่อไปนี้:
สำหรับผู้ใช้ Eclipse ...
คลิก Run -> Run configuration -> are -> set Alternate JRE สำหรับ 1.6 หรือ 1.7