Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

จะตรวจสอบหน่วยความจำที่ใช้โดยโปรแกรมใน Java ได้อย่างไร?


สำหรับระยะยาว โค้ดจาวาซึ่งใช้หน่วยความจำไดนามิกอย่างหนัก เราอาจจบลงด้วยข้อผิดพลาดหน่วยความจำไม่เพียงพอ เนื่องจากหน่วยความจำไม่เพียงพอของพื้นที่ฮีป

ในโปรแกรมด้านล่าง เราสามารถทดสอบ Java heap space ที่โปรแกรมใช้ฟรีได้ หากมีการใช้พื้นที่ฮีป มากกว่า 90 เปอร์เซ็นต์ จากนั้นตัวรวบรวมขยะจะ เรียกอย่างชัดแจ้ง System.gc() การโทรกำลังบล็อกเธรดการเรียกจนกว่าตัวรวบรวมขยะจะเสร็จสิ้น ดังนั้น โค้ดนี้สามารถรันในเธรดแยกต่างหากได้

ตัวอย่าง

public class GCTest {
   public void runGC() {
      Runtime runtime = Runtime.getRuntime();
      long memoryMax = runtime.maxMemory();
      long memoryUsed = runtime.totalMemory() - runtime.freeMemory();
      double memoryUsedPercent = (memoryUsed * 100.0) / memoryMax;
      System.out.println("memoryUsedPercent: " + memoryUsedPercent);
      if (memoryUsedPercent > 90.0)
         System.gc();
   }
   public static void main(String args[]) {
      GCTest test = new GCTest();
         test.runGC();
   }
}

ผลลัพธ์

memoryUsedPercent: 0.07187129404943532