Javaサンプルコード辞典

MemoryMXBean - Java仮想マシンもメモリの使用量を取得する

MemoryMXBeanを利用してJava仮想マシンのメモリ使用量を取得するサンプルコードです。Java仮想マシンのメモリ領域はヒープ領域と、ヒープ以外の領域に分かれています。MemoryMXBeanはそれら個別のメモリ領域の使用量を取得するためのメソッドを提供しています。

メモリの使用量を取得するためには、まずgetHeapMemoryUsage()、getNonHeapMemoryUsage()を使用して、それぞれの領域の使用量を保持するMemoryUsageクラスのオブジェクトを取得します。そして、MemoryUsageクラスのオブジェクトからメモリの使用量を取得します。

MemoryUsageクラスを介して取得できるメモリの使用量は「VMが起動時にOSに要求するメモリ容量」、「現在の使用量」、「使用できる状態になっているメモリ空間の容量」と「VMが利用できるメモリ容量の最大値」の4つの値です。「使用できる状態になっているメモリ空間の容量」はOSが既にこのプロセスにメモリの割り当てを行った領域の量で、必ず、「現在の使用量」よりも大きい値になります。逆に「現在の使用量」が「VMが利用できるメモリ容量の最大値」以下であっても、OSのメモリ領域が少ない場合は、割り当てに失敗する場合もあります。

import java.lang.management.ManagementFactory;
import java.lang.management.MemoryMXBean;
import java.lang.management.MemoryUsage;

//Java仮想マシンのメモリの使用量を取得して標準出力に表示する
public class GetUsedMemory {

      public static void main(String[] args) {

            //Java仮想マシンのメモリ管理システムにアクセスするための
            //オブジェクトを取得する
            MemoryMXBean mbean = ManagementFactory.getMemoryMXBean();
            
            //ヒープメモリの使用量の情報を持つオブジェクトを取得する
            MemoryUsage heap = mbean.getHeapMemoryUsage();
            
            //VMが起動時にOSに要求するメモリ容量
            System.out.println("heap init:" + heap.getInit());
            //現在の使用量
            System.out.println("heap used:" + heap.getUsed());
            //使用できる状態になっているメモリ空間の容量
            System.out.println("heap committed:" + heap.getCommitted());
            ////VMが利用できるメモリ容量の最大値
            System.out.println("heap max:" + heap.getMax());
            
            //上記4つを同時に標準出力に表示する
            System.out.println(heap);
            
            //ヒープ以外のメモリの使用量の情報を持つオブジェクトを取得する
            MemoryUsage nonHeap = mbean.getNonHeapMemoryUsage();
            //VMが起動時にOSに要求するメモリ容量
            System.out.println("nonHeap init:" + nonHeap.getInit());
            //現在の使用量
            System.out.println("nonHeap used:" + nonHeap.getUsed());
            //使用できる状態になっているメモリ空間の容量
            System.out.println("nonHeap committed:" + nonHeap.getCommitted());
            //VMが利用できるメモリ容量の最大値
            System.out.println("nonHeap max:" + nonHeap.getMax());
            
            //上記4つを同時に標準出力に表示する
            System.out.println(nonHeap);
      }

}

(2007年11月3日)  

 ちょっと一休み. Javaキーワード並び替えゲーム

画面に表示される文字列を並び替えるとJavaに関連するキーワードになります。ヒントをたよりに並び替えを行ってエンターを押してください。 ユーザ登録をしてログインするとランキングに参加できます。
Flex Tips

DWRでリッチなWebページを作る!

Java Tips  java.io 編

Java Tips  java.lang 編