java -Xms , java -Xmx กำหมด memory ให้ JVM เพื่อป้องกันปัญหา Out of Memory

บทความเกี่ยวกับ : java -Xms , java -Xmx กำหมด memory ให้ JVM เพื่อป้องกันปัญหา Out of Memory


หลายคนคงจะเจอปัญหา out of memory เนื่องจากแรมไม่พอให้ JVM ใช้งาน
เหตุการแบบนี้อาจะเกิดจากความผิดพลาดในการคืน resource ของ Programmer เอง
แต่บางครั้ง Program ที่เขียนก็มีความต้องการใช้ Memory จำนวนมากจริงๆ เกินกว่าค่า default ที่กำหนดไว้ ซึ่งหากเราต้องการปรับแก้ให้ใช้คำสั่ง

   -java -Xms init ค่า heap size
    โดย Xms นั้นจะเป็นการกำหนดค่า ตั้งต้นของ Memory ไว้เป็นขั้นต่ำจากนั้นจะค่อยๆ เพิ่ม
     ถ้าหากมีความจำเป็นต้องการใช้ Memory  ในบางช่วง Peak โดยมากสุดจะไม่เกิน Xmx
     ค่าตั้งต้นควรกำหนดให้เหมาะสม ถ้าน้อยเกินไปก็จะทำให้ต้องเสียเวลานในการขยาย
     แต่ถ้ามากเกินไปก็จะเป็นการจอง Memory ไว้จนเกินความจำเป็น
   -java -Xmx max heap size
     ค่านี้เป็นค่าสูงสุดที่ Java จะทำการขยาย Memory เพื่อให้รองรับ load งานต่างๆ ของเราได้
     การกำหนด Value ตรงนี้น้อยไปอาจมีผลเสีย กรณีที่ระบบเรา Peak ขึ้นมาในบางช่วง
     ในทางตรงกันข้ามหากกำหนดไว้มากเกินไปจะมีผลให้ Memory ถูกจองมาใช้เยอะเกินไป
     หากเกิดปัญหาจากการที่ Programmer เขียนโปรแกรมไม่ดี ไม่ยอมคืน Resource จะทำให้
     ใช้ Memory ส่วนนี้เยอะจน Ram ไม่พอทำให้ล่มไปทั้ง Server เลยก็เป็นได้นะ

ตัวอย่างการกำหนดค่า Xms , Xmx เช่น

   -java -Xms256m
   -java -Xmx512m

ลองเอาไปปรับให้เหมาะสมกับโปรแกรมเราครับ
รับรองว่าปัญหา Out of Memory จะไม่เกิดขึ้น
แต่ทั้งนี้เราก็ต้องจัดการ Resource ให้ดีด้วยนะครับ ไม่เช่นนั้นไม่ว่าจะเพิ่มมากแค่ใหน
ก็ไม่รอดเพียงแต่จะขยายเวลา Out of Memory ออกไปแค่นั้นเอง

นอกจากนี้แล้วยังมี Parameter บางส่วนเกี่ยวกับเรื่องการจัดการ Memory เดี๋ยวจะเล่าให้ฟังอีกทีนะครับ
เช่นพวก -Xmn    -Xss เป็นต้น

นอกจากนี้แล้ว Memory ใน JVM ยังมีอีกส่วนที่ไม่ใช่ส่วนของ Heap Memory แต่เป็น Non Heap Memory หรือ PermGen เราสามารถเพิ่มได้ด้วยคำสั่ง
MaxPermSize=512m  เป็นต้น

ความคิดเห็น

  1. จะรู้ได้อย่างไรว่าจะ ต้องกำหนด xmx xms xmx เท่าไร
    รวมถึงพวก permgen ด้วยครับ

    ตอบลบ
  2. ความคิดเห็นนี้ถูกลบโดยผู้ดูแลระบบของบล็อก

    ตอบลบ
  3. ความคิดเห็นนี้ถูกลบโดยผู้ดูแลระบบของบล็อก

    ตอบลบ

แสดงความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

Oracle date format จัด format date ให้แสดง พศ และ เดือน ภาษาไทยหรือตามภาษาที่เราเลือก

Java this กับ super การใช้งานคำสั่ง this กับ super ใน ภาษา Java