ก่อนอื่นมาดูสถานการณ์ทั่วไปของ JVM รวมถึง: การใช้หน่วยความจำฮีปคลาสโหลดจำนวนเธรดและข้อมูลอื่น ๆ ดังที่แสดงในรูปด้านล่าง:
จากนั้นดูการใช้ความทรงจำของ JVM ที่เห็นผ่าน JConsole JVM ส่วนใหญ่จัดการหน่วยความจำสองประเภท: กองและไม่ใช่กอง พูดง่ายๆคือกองเป็นหน่วยความจำที่สามารถเข้าถึงรหัส Java ซึ่งสงวนไว้สำหรับนักพัฒนา Non-heap สงวนไว้สำหรับ JVM สำหรับตัวเอง พื้นที่วิธีการทั้งหมดหน่วยความจำที่จำเป็นสำหรับการประมวลผลภายในหรือการเพิ่มประสิทธิภาพของ JVM (เช่น JIT Compiled Code Cache) โครงสร้างแต่ละคลาส (เช่นพูลคงที่รันไทม์ฟิลด์และข้อมูลวิธีการ) และรหัสของวิธีการและตัวสร้างอยู่ในหน่วยความจำที่ไม่ใช่กอง ใน JConsole เราจะเห็นสถานะหน่วยความจำของแต่ละส่วนดังที่แสดงในแผนภูมิแถบสีเขียวด้านล่าง ใน JConsole หน่วยความจำกองของ JVM แบ่งออกเป็น: พูลหน่วยความจำอวกาศ Eden, พูลหน่วยความจำอวกาศผู้รอดชีวิต, พูลหน่วยความจำ Gen ที่ดำรงตำแหน่งและหน่วยความจำที่ไม่ใช่กองอยู่ถูกแบ่งออกเป็น: พูลหน่วยความจำแคชโค้ดและพูลหน่วยความจำ Gen Perm ดังที่แสดงในรูปด้านล่าง:
สุดท้ายให้ใช้ JConsole เพื่อตรวจสอบการตั้งค่าพารามิเตอร์ของ JVM ดังที่แสดงในรูปด้านล่าง:
พารามิเตอร์ JVM ข้างต้นมีดังนี้:
-xms พื้นที่กองขั้นต่ำ
-xmx พื้นที่กองสูงสุด
-xmn พื้นที่รุ่นใหม่
-xSS สแต็กสแต็ก
-xx: permsize = xxx พื้นที่การสร้างถาวร
-xx: maxpermsize = xxx พื้นที่การสร้างถาวรสูงสุดสูงสุด