2016.12.14
メモリ容量の取得
はじめに
ここでは、Java仮想マシン内のメモリ容量を取得する方法を紹介します。
Javaアプリケーションは、Runtimeクラスのインスタンスを1つだけ持ちます。そのRuntimeクラスに用意されているメソッドを使うことで、各種メモリ容量を取得することができます。
freeMemoryメソッド
public long freeMemory()
・Java仮想マシン内の空きメモリーの量を返します。 パラメータ なし 戻り値 将来割り当てられるオブジェクトに利用可能な現在のメモリの総容量 (バイト単位)
totalMemoryメソッド
public long totalMemory()
・Java 仮想マシンのメモリーの総容量を返します。 パラメータ なし 戻り値 現在および将来のオブジェクトに利用可能な現在のメモリの総容量 (バイト単位)
maxMemoryメソッド
public long maxMemory()
・Java 仮想マシンが使用を試みる最大メモリー容量を返します。 パラメータ なし 戻り値 仮想マシンが使用を試みる最大メモリー容量 (単位はバイト)
Javaソースコード
MemoryInfo.java
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025
public class MemoryInfo { public static void main( String[] args ) { // Java 仮想マシン内の空きメモリー容量 long memfree = Runtime.getRuntime().freeMemory(); // Java 仮想マシンのメモリーの総容量 long memtotal = Runtime.getRuntime().totalMemory(); // Java 仮想マシンが使用を試みる最大メモリー容量 long memmax = Runtime.getRuntime().maxMemory() ; // 取得結果を表示 System.out.println( "空きメモリー容量:" + memfree + "バイト " + memfree / 1024 + "キロバイト " + memfree / ( 1024 * 1024 ) + "メガバイト" ); System.out.println( "メモリー総容量:" + memtotal + "バイト " + memtotal / 1024 + "キロバイト " + memtotal / ( 1024 * 1024 ) + "メガバイト" ); System.out.println( "使用可能最大メモリー容量:" + memmax + "バイト " + memmax / 1024 + "キロバイト " + memmax / ( 1024 * 1024 ) + "メガバイト" ); } }
コンパイル ソースコードが「ANSI」の場合
C:\talavax\javasample>javac -encoding sjis MemoryInfo.java
コンパイル ソースコードが「UTF-8」の場合
C:\talavax\javasample>javac MemoryInfo.java
実行
C:\talavax\javasample>java MemoryInfo
Javaソースコードの解説
ここからは、このソースコードを上から順番に解説していきます。
001
public class MemoryInfo {
クラス名を、MemoryInfoとしています。
002
public static void main( String[] args ) {
このmainメソッドからプログラムを実行します。
003 004
// Java 仮想マシン内の空きメモリー容量 long memfree = Runtime.getRuntime().freeMemory();
006 007
// Java 仮想マシンのメモリーの総容量 long memtotal = Runtime.getRuntime().totalMemory();
009 010
// Java 仮想マシンが使用を試みる最大メモリー容量 long memmax = Runtime.getRuntime().maxMemory() ;
012 013 014 015 016 017 018 019 020 021 022 023
// 取得結果を表示 System.out.println( "空きメモリー容量:" + memfree + "バイト " + memfree / 1024 + "キロバイト " + memfree / ( 1024 * 1024 ) + "メガバイト" ); System.out.println( "メモリー総容量:" + memtotal + "バイト " + memtotal / 1024 + "キロバイト " + memtotal / ( 1024 * 1024 ) + "メガバイト" ); System.out.println( "使用可能最大メモリー容量:" + memmax + "バイト " + memmax / 1024 + "キロバイト " + memmax / ( 1024 * 1024 ) + "メガバイト" );
それぞれの変数にはバイト単位で値が格納されているので、キロバイトの単位で表示するときは1024で割り、メガバイト単位で表示するときには1024x1024で割っています。このソースの場合は、整数で割り算を行っているため、結果の小数点以下は切捨てられます。
以上です。
関連コンテンツ
JVM(Java Virtual Machine)は、OSとJavaの間で動作するソフトウェアで、Java仮想マシン、Javaバーチャルマシンと呼ばれます。詳しくは、記事をご覧ください。
2020.03.23