com.docomostar.lang
クラス MemoryManager

Object
  上位を拡張 com.docomostar.lang.MemoryManager

public final class MemoryManager
extends Object

Star のメモリ管理機構にアクセスする手段を提供します。 Star におけるメモリ領域は、複数の区画に分けて管理されています。 区画の数は端末によって異なります。

それぞれの区画について、以下の情報を得ることができます。 区画には0から順に番号付けがなされており、 それぞれのメソッドの戻り値の配列の第 i 要素には、 区画 i の情報が格納されています。 なお、区画0が、いわゆる Java ヒープであることは保証されています。

導入されたバージョン:
Star-1.0

フィールドの概要
static int JAVA_HEAP
          Java ヒープの区画番号を表します(=0)。
 
メソッドの概要
 long[] freeMemory()
           各区画ごとの空きメモリ容量を取得します。
static MemoryManager getMemoryManager()
           メモリ管理機構のインスタンスを取得します。
 int getNumPartitions()
          このメモリ管理機構における「区画」の数を取得します。
 long[] maxContiguousMemory()
           各区画ごとの最大連続空き領域の容量を取得します。
 long[] totalMemory()
           各区画ごとの全メモリ容量(使用量と空き容量の合計)を取得します。
 
クラス Object から継承されたメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

JAVA_HEAP

public static final int JAVA_HEAP
Java ヒープの区画番号を表します(=0)。

関連項目:
定数フィールド値
メソッドの詳細

getMemoryManager

public static MemoryManager getMemoryManager()

メモリ管理機構のインスタンスを取得します。 複数回呼び出された場合は、常に同じインスタンスを返します。

戻り値:
メモリ管理機構のインスタンスを返します。

totalMemory

public long[] totalMemory()

各区画ごとの全メモリ容量(使用量と空き容量の合計)を取得します。 戻り値の配列の第 i 要素には、 区画 i の全メモリ容量が格納されています。

このメソッドは、 呼び出しの度に最新の情報が格納された配列を新たに生成して返します。 また、任意の時刻において、このメソッドの戻り値の第 0 要素の値は、常に Runtime.totalMemory() と同じ値となります。

戻り値:
各区画の全メモリ容量 [bytes] を返します。 配列の長さは、この実装が持つ区画の数と一致します。

freeMemory

public long[] freeMemory()

各区画ごとの空きメモリ容量を取得します。 戻り値の配列の第 i 要素には、 区画 i の空きメモリ容量が格納されています。

なお、既に GC 対象ではあるが回収されていないオブジェクトの容量は、 空きメモリ容量にはカウントされません。 それらも空きメモリ容量としてカウントしたい場合には、 このメソッドを呼び出す直前に、 明示的に System.gc() を呼び出して下さい。

このメソッドは、 呼び出しの度に最新の情報が格納された配列を新たに生成して返します。 また、任意の時刻において、このメソッドの戻り値の第 0 要素の値は、常に Runtime.freeMemory() と同じ値となります。

戻り値:
各区画の空きメモリ容量 [bytes] を返します。 配列の長さは、この実装が持つ区画の数と一致します。

maxContiguousMemory

public long[] maxContiguousMemory()

各区画ごとの最大連続空き領域の容量を取得します。 区画中に存在する連続空き領域のうち、 最大の容量を持つ領域の容量を取得します。 戻り値の配列の第 i 要素には、 区画 i の最大連続空き領域の容量が格納されています。

原理的には、 ここで取得できる値以下のサイズを持つオブジェクトであれば、 コンパクション無しに生成できることになります。 しかしながら、オブジェクトによっては、 生成時に一時的にメモリを確保し、 生成中にそのメモリを解放するものも存在します。 そのようなオブジェクトでは、 たとえここで取得できる値以下のサイズを持つものであっても、 メモリの使用状況によっては、 一時的に必要なメモリの確保に失敗して、生成に失敗すること が有ることに注意してください。

なお、このメソッド呼び出し時に、 自動的にコンパクションが実行されることはありません。 したがって、 コンパクションを実施すればもっと大きな連続領域が確保できるケースでは、 実際に (コンパクション後に) 確保できる連続領域の容量よりも少ない値が返されることになります。

このメソッドは、 呼び出しの度に最新の情報が格納された配列を新たに生成して返します。

戻り値:
各区画の最大連続空き領域の容量 [bytes] を返します。 配列の長さは、この実装が持つ区画の数と一致します。

getNumPartitions

public int getNumPartitions()
このメモリ管理機構における「区画」の数を取得します。 この値は実装によって一意に定まります。 また、動的に変化することもありません。

戻り値:
このメモリ管理機構における「区画」の数を返します。


NTT DOCOMO,INC.

本製品または文書は著作権法により保護されており、その使用、複製、再頒布および逆コンパイルを制限するライセンスのもとにおいて頒布されます。NTTドコモ(その他に許諾者がある場合は当該許諾者も含めて)の書面による事前の許可なく、本製品および関連する文書のいかなる部分も、いかなる方法によっても複製することが禁じられます。フォントを含む第三者のソフトウェアは、著作権法により保護されており、その提供者からライセンスを受けているものです。

Sun、Sun Microsystems、Java、J2MEおよびJ2SEは、米国およびその他の国における米国 Sun Microsystems,Inc.の商標または登録商標です。サンのロゴマークは、米国 Sun Microsystems, Inc.の登録商標です。

FeliCaは、ソニー株式会社が開発した非接触ICカードの技術方式です。FeliCaは、ソニー株式会社の登録商標です。

「iモード」、「iアプリ/アイアプリ」、「i-αppli」ロゴ、「DoJa」はNTTドコモの商標または登録商標です。

その他記載された会社名、製品名などは該当する各社の商標または登録商標です。