สารบัญ
ชวา หน่วยความจำรับข้อมูลการใช้งาน 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ลิงก์นี้จะนำคุณไปยัง [หน้าเว็บที่เกี่ยวข้อง]
