บทความนี้แนะนำวิธีการ (2 ประเภท) ของ eclipse เพื่อแก้ไขการปรับพารามิเตอร์ JVM และแชร์กับคุณดังนี้:
โดยทั่วไปเมื่อคุณไม่ได้ตั้งค่าการตั้งค่าที่เกี่ยวข้องสำหรับ Eclipse คุณจะรู้สึกว่าการเริ่มต้นนั้นช้าและใช้งานได้ดี ในความเป็นจริงตราบใดที่คุณกำหนดค่าพารามิเตอร์ที่เกี่ยวข้องของ eclipse มันจะได้รับการปรับปรุงอย่างมาก
มีสองวิธี:
1. เปิดไฟล์การกำหนดค่า Eclipse eclipse.ini และเปลี่ยน -xmx (ค่าของมันแสดงถึงหน่วยความจำสูงสุดที่ JVM สามารถใช้ได้)
2. เมื่อเรียกใช้โปรแกรม Java ให้เลือก run-> เรียกใช้การกำหนดค่า -> อาร์กิวเมนต์และป้อน -xms100m -xmx800m (-xms แสดงขนาดหน่วยความจำที่จัดสรรเมื่อ JVM เริ่มต้นและ -xmx แสดงถึงจำนวนหน่วยความจำสูงสุดที่สามารถจัดสรรได้)
วันนี้เมื่อฉันทดสอบเอกสารไปยังรูปภาพใน Eclipse มีรายงานข้อผิดพลาดต่อไปนี้:
java.lang.outofMemoryError: พื้นที่ java heap
จากข้อมูลข้อยกเว้นด้านบนเราจะเห็นว่าหน่วยความจำที่ต้องการโดย JVM นั้นเกินกว่าหน่วยความจำสูงสุดที่เราจัดสรรให้กับเครื่องเสมือน ดังนั้นปัญหาจึงกลายเป็นวิธีการตั้งค่าหน่วยความจำสูงสุดของ JVM ใน Eclipse
1. ลองแก้ไขไฟล์ eclipse.ini (วิธีนี้ไม่ทำงาน)
ค้นหาไฟล์ eclipse.ini ในไดเรกทอรี Eclipse และแก้ไขเนื้อหาต่อไปนี้:
-XMS40M-XMX512M
หลังจากแก้ไขแล้วการรีสตาร์ท eclipse พบว่ามันไม่ได้ผลเลย หลังจากตรวจสอบข้อมูลบางอย่างในภายหลังปรากฎว่าชุดหน่วยความจำขั้นต่ำและสูงสุดที่ตั้งไว้ที่นี่ถูกใช้โดย JVM ค่าหน่วยความจำนี้มีหน่วยความจำที่ใช้โดย eclipse เอง
2. แก้ไข JDK เพื่อใช้หน่วยความจำ (วิธีนี้เป็นไปได้)
ค้นหา window-> preferences-> java-> ติดตั้ง jre ใน eclispe คลิกปุ่มแก้ไขทางด้านขวาและกรอกค่าต่อไปนี้ในตัวเลือก "อาร์กิวเมนต์ VM เริ่มต้น" ในอินเทอร์เฟซการแก้ไข
-XMS64M -xmx128m
3. แก้ไขการกำหนดค่าการเรียกใช้ (วิธีนี้เป็นไปได้)
คลิกขวาที่รหัสคลิก "เรียกใช้เป็น" -> "เรียกใช้การกำหนดค่า" ในลำดับและกรอกค่าต่อไปนี้ใน "อาร์กิวเมนต์ VM:" ในพารามิเตอร์อาร์กิวเมนต์
-XMS64M -xmx128m
หน่วยความจำฮีปส่วนใหญ่จะถูกตั้งค่าผ่านพารามิเตอร์ JVM ต่อไปนี้:
| -xmx512m | หน่วยความจำกองรวมสูงสุดโดยทั่วไปตั้งค่าเป็น 1/4 ของหน่วยความจำกายภาพ |
| -xms512m | หน่วยความจำฮีปรวมเริ่มต้นมักจะถูกตั้งค่าเป็นขนาดใหญ่เท่ากับหน่วยความจำฮีปสูงสุดดังนั้นจึงไม่จำเป็นต้องปรับขนาดฮีปตามการใช้งานฮีปปัจจุบัน |
| -xmn192m | Young With Heap Memory, Sun อย่างเป็นทางการแนะนำ 3/8 ของกองทั้งหมด |
| องค์ประกอบของหน่วยความจำกอง | หน่วยความจำฮีปทั้งหมด = เด็กพร้อมหน่วยความจำฮีป + เก่าพร้อมหน่วยความจำฮีป + ถาวรพร้อมหน่วยความจำฮีป |
| ยังเด็กที่มีความทรงจำมากมาย | วัตถุถูกวางไว้ที่นี่เมื่อมันถูกสร้างขึ้น |
| แก่กว่าด้วยกองหน่วยความจำ | วัตถุจะถูกวางไว้ที่นี่ก่อนที่จะรีไซเคิลจริง |
| ถาวรกับหน่วยความจำกอง | ไฟล์ชั้นเรียนข้อมูลเมตา ฯลฯ อยู่ที่นี่ |
| -xx: Permsize = 128m | ขนาดเริ่มต้นของกองเข็มขัดถาวร |
| -xx: maxpermsize = 128m | ขนาดสูงสุดของกองวงดนตรีถาวรคราสเริ่มต้นคือ 256m หากคุณต้องการรวบรวม JDK คุณต้องตั้งค่านี้ให้มีขนาดใหญ่มากเพราะมีชั้นเรียนมากเกินไป |
4. ค้นหารหัสหน่วยความจำ JVM ปัจจุบัน
ต่อไปนี้เป็นรหัสเพื่อสอบถามขนาดหน่วยความจำ JVM ปัจจุบัน คุณสามารถทดสอบได้ว่าหน่วยความจำ JVM จะเปลี่ยนไปหลังจากการตั้งค่าข้างต้นหรือไม่ หลังจากเพิ่มรายการการกำหนดค่าสำหรับหน่วยความจำ JVM ไม่จำเป็นต้องรีสตาร์ท eclipse รหัสเฉพาะมีดังนี้:
Public Class TestMemory { / ** * @param args * / โมฆะคงที่สาธารณะหลัก (สตริง [] args) {ระบบ ออก. println ("ข้อมูลหน่วยความจำ:" + tomemoryinfo ()); } / ** * รับข้อมูลหน่วยความจำของ jvm ปัจจุบัน * * @return * / สตริงคงที่สาธารณะ tomemoryinfo () {runtime currruntime = runtime.getRuntime (); int nfreeMemory = (int) (currruntime.freememory () / 1024 /1024); int ntotalMemory = (int) (currruntime.totalmemory () / 1024 /1024); ส่งคืน nfreememory + "m/" + ntotalmemory + "m (ฟรี/รวม)"; -ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น