ในการกำหนดค่าพารามิเตอร์ JVM เพื่อลดการหยุดการรวบรวมขยะชั่วคราว คุณสามารถทำตามขั้นตอนเหล่านี้:
1. ตั้งค่าขนาดฮีป:
- ตั้งค่าขนาดฮีปสูงสุด:- ใช้แฟล็ก `-Xmx` เพื่อกำหนดขนาดฮีปสูงสุด
- ตัวอย่างเช่น `-Xmx2g` ตั้งค่าขนาดฮีปสูงสุดเป็น 2GB
- ตั้งค่าขนาดฮีปเริ่มต้น:
- ใช้แฟล็ก `-Xms` เพื่อกำหนดขนาดฮีปเริ่มต้น
- ตัวอย่างเช่น `-Xms2g` ตั้งค่าขนาดฮีปเริ่มต้นเป็น 2GB
2. กำหนดขนาดคนรุ่นใหม่:
- กำหนดขนาดคนรุ่นใหม่:- ใช้แฟล็ก `-Xmn` เพื่อกำหนดขนาดคนรุ่นใหม่
- ตัวอย่างเช่น `-Xmn1g` ตั้งค่าขนาดเจเนอเรชั่นใหม่เป็น 1GB
3. ตั้งค่าตัวรวบรวมขยะ:
- ใช้เครื่องกำจัดขยะแบบแรก (G1):- ใช้แฟล็ก `-XX:+UseG1GC` เพื่อเปิดใช้งานตัวรวบรวมขยะ G1
- ตัวสะสมนี้ได้รับการออกแบบมาเพื่อลดเวลาหยุดชั่วคราว
4. ตั้งเวลาหยุดชั่วคราวสูงสุด:
- ตั้งเวลาหยุดชั่วคราวสูงสุด:- ใช้แฟล็ก `-XX:MaxGCPauseMillis` เพื่อตั้งเวลาหยุดชั่วคราวสูงสุด
- ตัวอย่างเช่น `-XX:MaxGCPauseMillis=200` ตั้งเวลาหยุดชั่วคราวสูงสุดเป็น 200 มิลลิวินาที
5. ตั้งค่าเธรด GC แบบขนาน:
- ตั้งค่าจำนวนเธรด GC แบบขนาน:- ใช้แฟล็ก `-XX:ParallelGCThreads` เพื่อกำหนดจำนวนเธรด GC แบบขนาน
- ตัวอย่างเช่น `-XX:ParallelGCThreads=20` ตั้งค่าจำนวนเธรด GC แบบขนานเป็น 20
6. ตั้งค่าเธรด GC พร้อมกัน:
- ตั้งค่าจำนวนเธรด GC ที่เกิดขึ้นพร้อมกัน:- ใช้แฟล็ก `-XX:ConcGCThreads` เพื่อกำหนดจำนวนเธรด GC ที่เกิดขึ้นพร้อมกัน
- ตัวอย่างเช่น `-XX:ConcGCThreads=5` ตั้งค่าจำนวนเธรด GC ที่เกิดขึ้นพร้อมกันเป็น 5
7. ตั้งค่าเปอร์เซ็นต์การเข้าใช้ฮีปเริ่มต้น:
- ตั้งค่าเปอร์เซ็นต์การเข้าใช้ฮีปเริ่มต้น:- ใช้แฟล็ก `-XX:InitiatingHeapOccupancyPercent` เพื่อตั้งค่าเปอร์เซ็นต์การเข้าใช้ฮีปเริ่มต้น
- ตัวอย่างเช่น `-XX:InitiatingHeapOccupancyPercent=70` ตั้งค่าเปอร์เซ็นต์การเข้าใช้ฮีปเริ่มต้นเป็น 70%
8. ตรวจสอบและปรับแต่ง:
- ตรวจสอบการเก็บขยะ:- ใช้เครื่องมือเช่น VisualVM หรือ GCeasy เพื่อตรวจสอบการรวบรวมขยะ
- ปรับพารามิเตอร์ JVM ตามความจำเป็นเพื่อลดเวลาหยุดชั่วคราว
ด้วยการทำตามขั้นตอนเหล่านี้ คุณสามารถกำหนดค่าพารามิเตอร์ JVM เพื่อลดการหยุดการรวบรวมขยะให้เหลือน้อยที่สุด และรับประกันประสิทธิภาพของแอปพลิเคชันที่มีประสิทธิภาพ
การอ้างอิง:[1] https://www.uber.com/blog/jvm-tuning-garbage-collection/
[2] https://docs.datastax.com/en/dse/6.8/managing/operations/configure-garbage-first-collection.html
[3] https://sematext.com/blog/java-garbage-collection-tuning/
[4] https://docs.oracle.com/cd/E55119_01/doc.71/e55122/cnf_jvmgc.htm
[5] https://docs.oracle.com/cd/E40972_01/doc.70/e40973/cnf_jvmgc.htm
-