Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon ฉันจะกำหนดค่าพารามิเตอร์ JVM เพื่อลดการหยุดการรวบรวมขยะได้อย่างไร


ฉันจะกำหนดค่าพารามิเตอร์ JVM เพื่อลดการหยุดการรวบรวมขยะได้อย่างไร


ในการกำหนดค่าพารามิเตอร์ 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
-