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で使われる単位を紹介 |
データサイズ | データの容量とは? |
計算結果の表示足し算(加法)/引き算(減法)/掛け算(乗法)/割り算(除法)の使い方を説明 |
■新着情報
2022.07.07 | 外部プログラムの実行 | exeファイル実行 |
2022.07.06 | 完全数 | 6=1+2+3 |
■広告