เมนู

ตรวจสอบการใช้งานหน่วยความจำของ Java

สารบัญ

ชวา หน่วยความจำรับข้อมูลการใช้งาน Runtime.getRuntime().totalMemory, freeMemory

ชวา ฟังก์ชันนี้จะส่งคืนข้อมูลเกี่ยวกับหน่วยความจำของเครื่องเสมือน ซึ่งรวมถึง "ทั้งหมด" "ที่ใช้ไป" และ "หน่วยความจำสูงสุดที่ใช้งานได้"
คำอธิบายสำหรับแต่ละรายการมีดังนี้:

  • ทั้งหมด・・・Runtime.getRuntime().totalMemory()นี่คือปริมาณหน่วยความจำที่จัดสรรให้กับ Java Virtual Machine
  • ปริมาณการใช้งาน・・・Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()มันกลายเป็นว่า
    นี่คือปริมาณการใช้หน่วยความจำของวัตถุที่ถูกจัดสรรไว้ในหน่วยความจำในปัจจุบัน
  • ใช้งานได้สูงสุด・・・Runtime.getRuntime().maxMemory()ตัวเลขนี้แสดงถึงปริมาณหน่วยความจำสูงสุดที่ Java Virtual Machine จะพยายามใช้งาน
    หากการใช้งานหน่วยความจำใกล้ถึงขีดจำกัดทั้งหมด และระบบจัดการขยะไม่สามารถเพิ่มพื้นที่ว่างในหน่วยความจำได้ เครื่องเสมือน Java จะขยายขนาดจนถึงความจุ "สูงสุดที่มีอยู่"

ตัวอย่างโปรแกรม

/**
 * Java 仮想マシンのメモリ総容量、使用量、
 * 使用を試みる最大メモリ容量の情報を返します。
 * @return Java 仮想マシンのメモリ情報
 */
public static String getMemoryInfo() {
    DecimalFormat f1 = new DecimalFormat("#,###KB");
    DecimalFormat f2 = new DecimalFormat("##.#");
    long free = Runtime.getRuntime().freeMemory() / 1024;
    long total = Runtime.getRuntime().totalMemory() / 1024;
    long max = Runtime.getRuntime().maxMemory() / 1024;
    long used = total - free;
    double ratio = (used * 100 / (double)total);
    String info = 
    "Java メモリ情報 : 合計=" + f1.format(total) + "、" +
    "使用量=" + f1.format(used) + " (" + f2.format(ratio) + "%)、" +
    "使用可能最大="+f1.format(max);
    return info;
}


ผลการดำเนินการ 1

◆ตัวอย่าง

public static void main(String[] args) { System.out.println(getMemoryInfo()); }

◆ผลลัพธ์

ข้อมูลหน่วยความจำ Java: ทั้งหมด = 1,984 KB, ที่ใช้ไป = 458 KB (23.11 TP3T), หน่วยความจำสูงสุดที่ใช้งานได้ = 65,088 KB

ผลการดำเนินการ 2

◆ตัวอย่าง
ลองเปลี่ยนขนาดฮีปของ Java แล้วลองรันโปรแกรมดู
สามารถกำหนดขนาดฮีปของ Java ได้โดยใช้ตัวเลือกคำสั่ง Java

java -Xms64m -Xmx512m Main

-Xms ขนาดฮีปเริ่มต้น
ระบุการจัดสรรหน่วยความจำเริ่มต้นสำหรับ Java Virtual Machine ค่าเริ่มต้นคือ 2MB
-Xmx ขนาดฮีปสูงสุด
ระบุปริมาณหน่วยความจำสูงสุดที่จะจัดสรรให้กับ Java Virtual Machine ค่าเริ่มต้นคือ 64MB

public static void main(String[] args) { System.out.println(getMemoryInfo()); }

◆ผลลัพธ์

ข้อมูลหน่วยความจำ Java: ทั้งหมด = 65,088KB, ที่ใช้ไป = 524KB (0.8%), หน่วยความจำสูงสุดที่ใช้งานได้ = 520,256KB

"รันไทม์รวม.getRuntime().totalMemory()"-Xmsค่าสูงสุดที่เป็นไปได้คือ Runtime.getRuntime().maxMemory()-Xmxลิงก์นี้จะนำคุณไปยัง [หน้าเว็บที่เกี่ยวข้อง]

  • URL をkoピーしました!
สารบัญ