2016.12.14

メモリ容量の取得

はじめに

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

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

freeMemoryメソッド

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

  パラメータ なし

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

totalMemoryメソッド

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

  パラメータ なし

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

maxMemoryメソッド

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

  パラメータ なし

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

Javaソースコード

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

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();

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

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

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

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

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

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 ) + "メガバイト"  );

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

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

以上です。

関連コンテンツ

プログラミングで使う変数って何?

2020.03.23

コンピュータで扱う情報の量を表す単位って何?メモリ、HDD(ハードディスク)、SSDなどデータを格納する機器の仕様に書いている記号GB,TBとは?

2020.10.12

基本的な計算である足し算(加法)/引き算(減法)/掛け算(乗法)/割り算(除法)を行うプログラム作成。

2020.03.23

コンピューター(computer)の意味を説明しています。

2022.07.22

Javaを使った簡単な応用プログラム(生年月日から年齢を計算プログラムなど)を紹介しています。

2022.07.07

Javaの学習に役立つソースコードを多数紹介しています。是非、ご覧ください。

2022.09.10

画像フォーマット形式・色・大きさ・傾きなどの変更、特定の図形(文字・記号など)を見つけたり、取り出したりする画像処理について詳しく解説。

2015.11.29

プログラミング、ITに関する用語をまとめています。

2022.10.17

変数やクラスに格納されている値をコンソール出力する方法は?

2020.03.23

プログラムの最初に実行されるメソッドは?

2022.12.13

Javaのプログラムを書いてみませんか?プログラムの書き方をくわしく説明しています。

2020.03.23

「Javaソースコード」から実行可能な「オブジェクトコード」に変換する方法をくわしく説明しています。

2020.03.23

Javaのプログラムを作ってみませんか?プログラミングに必要なものの用意から実行までを説明しています。

2020.03.23

Swingパッケージを使ってグラフィック表示を行う方法を解説しています。

2020.03.23

繰り返し処理を使ったJavaのソースコードサンプルを紹介しています。

2020.03.23

配列を使うJavaソースコードを多数紹介しています。

2021.05.18

数学に関係するJavaのメソッドやソースコードなどを紹介しています。

2022.10.25

三角形、台形、円などいろいろな図形の面積を計算するプログラムを紹介しています。詳しくは、記事をご覧ください。

2021.05.18

StringクラスとStringBuilderクラスを利用したプログラミングの仕方を紹介しています。

2016.12.16

日本で使われてきた伝統文様「和柄」について解説しています。

2022.07.27

JVM(Java Virtual Machine)は、OSとJavaの間で動作するソフトウェアで、Java仮想マシン、Javaバーチャルマシンと呼ばれます。詳しくは、記事をご覧ください。

2020.03.23

プログラミング言語とは?種類や特徴について説明しています。

2022.08.03

ランタイムクラス(Runtime Class)の意味を説明しています。興味がある方は是非ご覧ください。

2022.08.10

メソッドの定義方法を詳しく解説しています。Javaのサンプルソースコードを使った説明もあります。

2020.03.23

Javaプログラムの構成について解説しています。詳しくは、こちらをご覧ください。

2020.03.23

for文で変数名iがよく使われる理由について説明しています。興味のある方は是非。

2022.08.29

コンピュータは、いくつかの装置から構成されています。その主な5つの装置(機能)って何?

2022.07.10

自然数と整数って何が違う?

2020.03.23

Javaの演算子'/'を使って割り算を行った結果と注意点などについて説明。

2020.03.23

「ゆるゆるプログラム」のコンテンツを紹介しています。興味のある方はこの記事をご覧ください。

2020.03.23

配列を使って素数を判定するプログラムを紹介しています。是非、ご覧ください。

2016.02.02

広告