如何检查 Java 中程序使用的内存?


对于一个长期运行的 java 代码来说,该代码大量使用动态内存,最终可能会因堆空间内存不足而导致内存溢出错误。

在下面的程序中,我们可以测试程序使用的可用 java 堆空间。如果堆空间使用超过 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.19245147705078125

更新时间: 2023-11-24

2K+ 浏览

开启你的 职业生涯

完成课程方可获得认证

开始吧
广告