Javaプログラミング学習サイト ゆるゆるプログラミング

2016/12/14 公開

・メモリ容量の取得

Java仮想マシン内のメモリ容量を取得する方法を紹介します。

Javaアプリケーションは、Runtimeクラスのインスタンスを1つだけ持ちます。そのRuntimeクラスに用意されているメソッドを使うことで、各種メモリ容量を取得することができます。

freeMemoryメソッド

public long freeMemory()
■Java仮想マシン内の空きメモリーの量を返します。

  パラメータ なし

  戻り値     将来割り当てられるオブジェクトに利用可能な現在のメモリの総容量 (バイト単位)

totalMemoryメソッド

public long totalMemory()
■Java 仮想マシンのメモリーの総容量を返します。

  パラメータ なし

  戻り値     現在および将来のオブジェクトに利用可能な現在のメモリの総容量 (バイト単位)

maxMemoryメソッド

public long maxMemory()
■Java 仮想マシンが使用を試みる最大メモリー容量を返します。

  パラメータ なし

  戻り値     仮想マシンが使用を試みる最大メモリー容量 (単位はバイト)

これら3つのメソッドを使ったソースコードは以下のとおりです。

MemoryInfo.java ← クリックしてダウンロードページに移動
001:    public class MemoryInfo {
002:    	public static void main( String[] args ) {
003:    		// Java 仮想マシン内の空きメモリー容量
004:    		long memfree = Runtime.getRuntime().freeMemory();
005:    
006:    		// Java 仮想マシンのメモリーの総容量
007:    		long memtotal = Runtime.getRuntime().totalMemory();
008:    
009:    		// Java 仮想マシンが使用を試みる最大メモリー容量
010:    		long memmax = Runtime.getRuntime().maxMemory() ;
011:    
012:    		// 取得結果を表示
013:    		System.out.println(  "空きメモリー容量:" + memfree + "バイト  "
014:    					+ memfree / 1024 + "キロバイト  "
015:    					+ memfree / ( 1024 * 1024 ) + "メガバイト" );
016:    
017:    		System.out.println(  "メモリー総容量:" + memtotal + "バイト  "
018:    					+ memtotal / 1024 + "キロバイト  "
019:    					+ memtotal / ( 1024 * 1024 ) + "メガバイト"  );
020:    
021:    		System.out.println(  "使用可能最大メモリー容量:" + memmax + "バイト  "
022:    					+ memmax / 1024 + "キロバイト  "
023:    					+ memmax / ( 1024 * 1024 ) + "メガバイト"  );
024:    	}
025:    }

ここからは、このソースコードを上から順番に解説していきます。

001:    public class MemoryInfo {

クラス名を、MemoryInfoとしています。

002:    	public static void main( String[] args ) {

このmainメソッドからプログラムを実行します。

003:    		// Java 仮想マシン内の空きメモリー容量
004:    		long memfree = Runtime.getRuntime().freeMemory();

Java 仮想マシン内の空きメモリー容量をlong型変数memfreeに代入しています。

006:    		// Java 仮想マシンのメモリーの総容量
007:    		long memtotal = Runtime.getRuntime().totalMemory();

Java 仮想マシン内のメモリーの総容量をlong型変数memtotalに代入しています。

009:    		// Java 仮想マシンが使用を試みる最大メモリー容量
010:    		long memmax = Runtime.getRuntime().maxMemory() ;

Java Java 仮想マシンが使用を試みる最大メモリー容量をlong型変数memmaxに代入しています。

012:    		// 取得結果を表示
013:    		System.out.println(  "空きメモリー容量:" + memfree + "バイト  "
014:    					+ memfree / 1024 + "キロバイト  "
015:    					+ memfree / ( 1024 * 1024 ) + "メガバイト" );
016:    
017:    		System.out.println(  "メモリー総容量:" + memtotal + "バイト  "
018:    					+ memtotal / 1024 + "キロバイト  "
019:    					+ memtotal / ( 1024 * 1024 ) + "メガバイト"  );
020:    
021:    		System.out.println(  "使用可能最大メモリー容量:" + memmax + "バイト  "
022:    					+ memmax / 1024 + "キロバイト  "
023:    					+ memmax / ( 1024 * 1024 ) + "メガバイト"  );

変数memfreeとmemtotalとmemmaxをバイトキロバイトメガバイトで表示しています。

それぞれの変数にはバイト単位で値が格納されているので、キロバイトの単位で表示するときは1024で割り、メガバイト単位で表示するときには1024x1024で割っています。このソースの場合は、整数割り算を行っているため、結果の小数点以下は切捨てられます。

■関連コンテンツ

Javaの変数 Javaで扱う変数について解説
ITで使われる単位 ITで使われる単位を紹介
データサイズ データの容量とは?
四則演算(足し算/引き算/掛け算/割り算)について-画像

計算結果の表示

足し算(加法)/引き算(減法)/掛け算(乗法)/割り算(除法)の使い方を説明

■新着情報

2021.06.23 配列の初期値 配列の生成直後の値は?
2021.06.18 変数の初期値 変数に値を代入しないで計算

■広告

Topへ