แก้ไข: เกิดข้อผิดพลาดระหว่างการเริ่มต้นของ VM ไม่สามารถจองพื้นที่เพียงพอสำหรับกองวัตถุ

แม้ว่าแอพพลิเคชัน Java ไม่ใช่เทคโนโลยีเว็บยอดนิยมในปัจจุบัน แต่มีเหตุผลหลายประการที่ทำให้เครื่องเสมือน Java ทำงานได้โดยตรงบนเซิร์ฟเวอร์ Linux ถ้าคุณพยายามที่จะเรียกใช้คำสั่ง java Linux ทันทีทั้งบนฮาร์ดแวร์แบบแยกหรือภายในของ VM ของตัวเองคุณอาจได้รับข้อผิดพลาดเกิดขึ้นระหว่างการเริ่มต้นของ VM ไม่สามารถสำรองพื้นที่ว่างเพียงพอสำหรับข้อความฮีปของวัตถุ

นี้อาจจะดูแปลกกว่าเพราะคุณมากกว่าจะมี RAM เพียงพอที่จะใช้คำสั่ง แต่ส่วนใหญ่เนื่องจากมุมแหลมเฉพาะในทางที่หน้าหน่วยความจำกายภาพและเสมือนใช้ การระบุขนาดที่ค่อนข้างใหญ่บางส่วนควรทำให้คุณสามารถหลีกเลี่ยงข้อความนี้ได้อย่างสมบูรณ์และเรียกใช้คำสั่ง java ในแบบที่คุณต้องการ

วิธีที่ 1: การใช้ตัวเลือกบรรทัดคำสั่ง

ถ้าคุณได้ลองเรียกใช้ java และได้รับข้อความนี้คุณอาจเรียกใช้คำสั่งฟรีเพื่อให้แน่ใจว่ามีหน่วยความจำเหลือเฟือที่จะเรียกใช้โปรแกรมได้

โปรดสังเกตว่าในเครื่องทดสอบของเรามี RAM กายภาพประมาณ 2.3 กิกะไบต์และไม่สามารถใช้หน่วยความจำเสมือนได้เพียงหน้าเดียว ถ้าคุณสังเกตเห็นว่าคุณมีปัญหาเกี่ยวกับหน่วยความจำคุณจะต้องปิดสิ่งอื่น ๆ ที่คุณเคยใช้ไปก่อนที่จะลองอีกครั้ง ในทางกลับกันผู้ที่พบว่ามีหน่วยความจำฟรีมากมายสามารถกำหนดขนาดได้โดยตรง

ตัวอย่างเช่นในเครื่องของเราเราสามารถเรียกใช้คำสั่งเป็น java -Xms256m-Xmx512M และทำงานได้เหมือนที่คาดว่าจะได้รับอย่างอื่น สิ่งนี้ จำกัด ขนาดฮีปที่เครื่องเสมือน Java พยายามสำรองเมื่อเริ่มต้น เนื่องจากเครื่องเสมือนที่ไม่มีการควบคุมสามารถทำสิ่งผิดปกติได้สมมุติฐานอาจส่งข้อความผิดพลาดในระบบฟรีได้ คุณอาจต้องการเล่นรอบกับทั้งสองค่าก่อนที่คุณจะพบชุดค่าผสมที่เหมาะสม

นี่อาจเป็นปัญหาได้ไม่ว่าคุณจะใช้งานอะไรก็ตามเนื่องจาก JVM ไม่มีอะไรเกี่ยวข้องกับประเภทของ VM ที่คุณอาจใช้ในการรัน GNU / Linux

PRO TIP: หากปัญหาเกิดขึ้นกับคอมพิวเตอร์หรือแล็ปท็อป / โน้ตบุ๊คคุณควรลองใช้ซอฟต์แวร์ Reimage Plus ซึ่งสามารถสแกนที่เก็บข้อมูลและแทนที่ไฟล์ที่เสียหายได้ วิธีนี้ใช้ได้ผลในกรณีส่วนใหญ่เนื่องจากปัญหาเกิดจากความเสียหายของระบบ คุณสามารถดาวน์โหลด Reimage Plus โดยคลิกที่นี่

วิธีที่ 2: การส่งออกตัวแปรเพื่อทำการเปลี่ยนแปลงถาวร

เมื่อคุณพบค่าที่ใช้ได้คุณสามารถส่งออกเพื่อทำให้ถาวรสำหรับเซสชันนั้น ตัวอย่างเช่นเราใช้ export _JAVA_OPTIONS = '- Xms256M -Xmx512M' จากพรอมต์คำสั่ง bash และอนุญาตให้เรารันคำสั่ง java ด้วยตัวเองโดยไม่มีตัวเลือกอื่น ๆ จนกว่าเราจะออกจากเซิร์ฟเวอร์ของเรา

จำเป็นต้องใช้งานอีกครั้งเมื่อเข้าสู่เซสชันอื่นดังนั้นคุณอาจต้องการเพิ่มสคริปต์ดังกล่าวลงในสคริปต์เริ่มต้นที่เกี่ยวข้องถ้าคุณต้องการใช้คำสั่ง java บ่อยๆ เราเพิ่มบรรทัดลงในไฟล์. bash_login ของเราและดูเหมือนจะทำงานทุกครั้งที่เราใช้ข้อความเข้าสู่ระบบโดยไม่ต้องเรียกใช้อีกครั้งแม้ว่าคุณอาจต้องไปหาตำแหน่งอื่นถ้าคุณกำลังทำงานกับเปลือกที่แตกต่างกัน

คุณอาจสังเกตเห็นว่าการกำหนดค่าฮาร์ดแวร์บางอย่างเท่านั้นที่เรียกใช้ข้อความแสดงข้อผิดพลาดนี้ นั่นเป็นเพราะโดยปกติแล้วจะเกิดขึ้นกับเครื่องที่มี RAM เป็นจำนวนมาก แต่ลดการใช้งานลง Java จะพยายามจัดสรรบล็อกขนาดใหญ่เพียงเพื่อจะบอกว่ามันไม่สามารถที่จะตีความเป็นหมดหน่วยความจำ

วิธีที่ 3: การพิมพ์ตัวเลือก Java ปัจจุบัน

ถ้าคุณเคยทำงานที่บรรทัดคำสั่งและต้องการอ้างอิงอย่างรวดเร็วถึงสิ่งที่คุณตั้งค่า _JAVA_OPTIONS ไว้แล้วเพียงแค่เรียกใช้ echo $ _JAVA_OPTIONS และจะพิมพ์ค่าปัจจุบันทันที วิธีนี้จะเป็นประโยชน์สำหรับการแก้ปัญหาเมื่อคุณพยายามหาตัวเลขด้านขวาเพื่อลอง

โปรดทราบว่าในขณะที่การแก้ไขนี้ไม่จำเป็นต้องมีการเล่นอื่น ๆ Java จะโยนออกไม่สามารถสำรองพื้นที่เพียงพอสำหรับข้อความ heap วัตถุถ้าคุณเคยพบตัวเองอย่างแท้จริงในช่วงสั้น ๆ ของหน่วยความจำเสมือน หากเป็นกรณีนี้คุณจะต้องการตรวจสอบว่ากระบวนการใดกำลังทำงานอยู่และอาจเริ่มต้นเซิร์ฟเวอร์ใหม่หากเป็นตัวเลือก นอกจากนี้คุณยังสามารถสร้างพื้นที่ swap เพิ่มเติม แต่ถ้าเป็นปัญหาทั่วไปดีกว่าลองแก้ไขด้วยวิธีอื่น ๆ

ในบางกรณีการตั้งค่าของคุณดูเหมือนถูกต้อง แต่ยังไม่สามารถใช้งานได้ให้ตรวจสอบว่าคุณได้ติดตั้งแพคเกจ Java 64-bit เนื่องจากควรป้องกันปัญหานี้ ข้อกำหนดเกี่ยวกับหน่วยความจำแบบต่อเนื่องจะใช้กับ Java เวอร์ชัน 32 บิตเท่านั้น เราพบว่าในบางกรณีเวอร์ชัน 64 บิตพยายามที่จะสร้างเครื่องเสมือนแบบ 32 บิตดังนั้นการระบุตัวเลือก -d64 บนบรรทัดคำสั่งคงไว้สำหรับเรา

PRO TIP: หากปัญหาเกิดขึ้นกับคอมพิวเตอร์หรือแล็ปท็อป / โน้ตบุ๊คคุณควรลองใช้ซอฟต์แวร์ Reimage Plus ซึ่งสามารถสแกนที่เก็บข้อมูลและแทนที่ไฟล์ที่เสียหายได้ วิธีนี้ใช้ได้ผลในกรณีส่วนใหญ่เนื่องจากปัญหาเกิดจากความเสียหายของระบบ คุณสามารถดาวน์โหลด Reimage Plus โดยคลิกที่นี่

Facebook Twitter Google Plus Pinterest