โดยค่าเริ่มต้น ฮีพดัมพ์จะถูกสร้างขึ้นในไฟล์ชื่อ java_pidpid hprof ในไดเร็กทอรีการทำงานของ VM ดังในตัวอย่างด้านบน คุณสามารถระบุชื่อไฟล์หรือไดเร็กทอรีสำรองด้วยตัวเลือก -XX:HeapDumpPath=
ไฟล์ heap dump อยู่ที่ไหน
ตำแหน่งจะแตกต่างกันไปตามสภาพแวดล้อม แต่โดยทั่วไปแล้วไฟล์เหล่านี้จะปรากฏใน: C:\Windows\System32 หรือ C:\Windows\SysWOW64.
เมื่อสร้างการถ่ายโอนข้อมูลฮีพ
เริ่มด้วยการปล่อย 20180917 เมื่อพบข้อผิดพลาดหน่วยความจำไม่เพียงพอ การถ่ายโอนข้อมูลหน่วยความจำแบบฮีปจะถูกสร้างขึ้นโดยอัตโนมัติ (พารามิเตอร์ -XX:+ HeapDumpOnOutOfMemoryError ถูกเพิ่มในไฟล์ conf /jvm.
ฉันจะรับ heap dump ใน Linux ได้อย่างไร
สำหรับเครื่อง Linux คุณสามารถใช้คำสั่งต่างๆ เช่น ps -A | grep java หรือ netstat -tupln | grep java หรือด้านบน | grep java ขึ้นอยู่กับแอปพลิเคชันของคุณ จากนั้นคุณสามารถใช้คำสั่งเช่น jmap -dump:format=b, file=sample_heap_dump. hprof 1234 โดยที่ 1234 คือ PID
คุณจะรับ heap dump บน Outofmemoryerror ได้อย่างไร
เพื่อให้แน่ใจว่ามีการสร้างการถ่ายโอนข้อมูลแบบฮีปบน OOM เพื่อความชัดเจน:
- เชื่อมต่อกับ CSA (หรือเปิดคุณสมบัติ xml สำหรับแต่ละเซิร์ฟเวอร์ในคลัสเตอร์):
- เพิ่มสตริงอาร์กิวเมนต์ต่อไปนี้ในบริการแอปหรือ/และพารามิเตอร์ JVM ของบริการ bg: -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=\ hprof.
- เริ่มบริการใหม่