บางครั้งข้อผิดพลาดนี้บ่งชี้ว่าหน่วยความจำกายภาพและการสลับบนเซิร์ฟเวอร์ใช้งานจริงอย่างสมบูรณ์!
ฉันเห็นปัญหานี้เมื่อเร็ว ๆ นี้บนเซิร์ฟเวอร์ที่ใช้ RedHat Enterprise Linux 5.7 พร้อม RAM 48 GB ฉันพบว่าแม้กระทั่งวิ่ง
java -version
ทำให้เกิดข้อผิดพลาดเดียวกันซึ่งยืนยันว่าปัญหาไม่ได้เฉพาะเจาะจงกับแอปพลิเคชันของฉัน
วิ่ง
cat /proc/meminfo
รายงานว่า MemFree และ SwapFree ทั้งคู่มีค่าต่ำกว่า 1% ของค่า MemTotal และ SwapTotal ตามลำดับ:
MemTotal: 49300620 kB
MemFree: 146376 kB
...
SwapTotal: 4192956 kB
SwapFree: 1364 kB
การหยุดแอปพลิเคชั่นที่รันอยู่สองสามตัวบนเครื่องทำให้ตัวเลขหน่วยความจำว่างเพิ่มขึ้นบ้าง:
MemTotal: 49300620 kB
MemFree: 2908664 kB
...
SwapTotal: 4192956 kB
SwapFree: 1016052 kB
ณ จุดนี้อินสแตนซ์ใหม่ของ Java จะเริ่มทำงานได้ดีและฉันก็สามารถเรียกใช้แอปพลิเคชันของฉันได้
(สำหรับฉันอย่างชัดเจนนี่เป็นเพียงวิธีแก้ปัญหาชั่วคราวฉันยังมีงานที่โดดเด่นในการตรวจสอบกระบวนการที่ทำงานบนเครื่องนั้นอย่างละเอียดยิ่งขึ้นเพื่อดูว่ามีบางสิ่งที่สามารถทำได้เพื่อลดระดับการใช้หน่วยความจำเล็กน้อยโดยไม่ต้อง ต้องหันไปใช้แอปพลิเคชันหยุดทำงาน)