Java虛擬機器運行時查看記憶體使用量方式的三中方法__jvm

來源:互聯網
上載者:User

      提及到Java進程在啟動並執行時候記憶體使用量情況,是很多初學者比較迷惑的地方,也就是我們在運行編譯好的.class檔案時jvm向作業系統申請的記憶體如何查看。

可以使用jdk內建的運行時系統參數描述類RunTime中的三個方法來查看

RunTime.getRunTime().maxMemory();查看JVM虛擬機器可以向當前所在宿主的作業系統"可以"申請到的最大記憶體;如果程式運行時設定了-Xmx參數那麼這個值等於使用者佈建值,如果沒有設定預設為64m;

RunTime.getRunTime().totalMemory();查看JVM虛擬機器當前"已經"申請到的記憶體大小;如果程式運行時設定了-Xms參數那麼這個值等於使用者佈建值,如果沒有設定那麼程式會根據當前系統啟動並執行情況自動申請,但這個值必定小於等於RunTime.getTime().maxMemory;

RunTime.getRunTime().freeMemory();查看JVM中目前已經申請的到的記憶體中未使用的記憶體部分;這個值根據當前JVM申請到的記憶體使用量的越來越多的話,那麼這個值就會越小;


/*
 *-Xmx10m :java進程最大可以向作業系統申請的記憶體數
 *-Xms1m :java進程初始化時預設申請的記憶體(隨著系統的運行這個值會越來越大直到等於-Xmx值)
*/
public class HeapConfig {
   public static void main(String[] args) {

  System.out.println("Java進程可以向作業系統申請到的最大記憶體:"+(Runtime.getRuntime().maxMemory())/(1024*1024)+"M");
  System.out.println("Java進程空閑記憶體:"+(Runtime.getRuntime().freeMemory())/(1024*1024)+"M");
  System.out.println("Java進程現在從作業系統那裡已經申請了記憶體:"+(Runtime.getRuntime().totalMemory())/(1024*1024)+"M");
  
  byte[] bys = new byte[1024*1024];//申請1M記憶體
  System.out.println("Java進程可以向作業系統申請到的最大記憶體:"+(Runtime.getRuntime().maxMemory())/(1024*1024)+"M");
  System.out.println("Java進程空閑記憶體:"+(Runtime.getRuntime().freeMemory())/(1024*1024)+"M");
  System.out.println("Java進程現在從作業系統那裡已經申請了記憶體:"+(Runtime.getRuntime().totalMemory())/(1024*1024)+"M");
   }
}

控制台輸出結果

Java進程可以向作業系統申請到的最大記憶體:9M
Java進程空閑記憶體:5M
Java進程現在從作業系統那裡已經申請了記憶體:5M


Java進程可以向作業系統申請到的最大記憶體:9M
Java進程空閑記憶體:4M
Java進程現在從作業系統那裡已經申請了記憶體:5M

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.