ゆるゆるプログラミング

・メモリ容量の取得

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で扱う変数について解説
計算結果の表示 四則演算で計算した結果を表示するプログラムについて解説
ITで使われる単位 ITで使われる単位を紹介

■新着情報

2017.11.17 N値化 カラー画像をN値化する方法について解説
2017.11.16 最も近い値の取得 指定値に最も近い配列の値を取得する方法を解説
2017.10.02 アルファ値(透過) アルファ値(透過)について

■広告

法人向けのETC専用カード

~約8,000名の受講生と80社以上の導入実績~ 企業向けプログラミング研修ならCodeCamp

日本最大級ショッピングサイト!お買い物なら楽天市場

Topへ