|
JavaTM 2 Platform Std. Ed. v1.3 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--java.lang.Runtime
Java アプリケーションはすべて、Runtime
クラスの単一のインスタンスを持ちます。このクラスは、アプリケーションとアプリケーション実行環境とのインタフェースになります。現在の実行時オブジェクトは、getRuntime
メソッドにより取得できます。
アプリケーションは、自分の Runtime
クラスのインスタンスを生成することはできません。
getRuntime()
メソッドの概要 | |
void |
addShutdownHook(Thread hook)
新しい Virtual Machine のシャットダウンフックを登録します。 |
Process |
exec(String command)
指定された文字列コマンドを、独立したプロセスで実行します。 |
Process |
exec(String[] cmdarray)
指定されたコマンドと引数を、独立したプロセスで実行します。 |
Process |
exec(String[] cmdarray,
String[] envp)
指定されたコマンドと引数を、指定された環境を持つ独立したプロセスで実行します。 |
Process |
exec(String[] cmdarray,
String[] envp,
File dir)
指定されたコマンドと引数を、指定された環境と作業ディレクトリを持つ独立したプロセスで実行します。 |
Process |
exec(String cmd,
String[] envp)
指定された文字列コマンドを、指定された環境を持つ独立したプロセスで実行します。 |
Process |
exec(String command,
String[] envp,
File dir)
指定された文字列コマンドを、指定された環境と作業ディレクトリを持つ独立したプロセスで実行します。 |
void |
exit(int status)
現在実行している Java Virtual Machine を、シャットダウンシーケンスを開始して終了します。 |
long |
freeMemory()
システムの空きメモリの量を返します。 |
void |
gc()
ガベージコレクタを実行します。 |
InputStream |
getLocalizedInputStream(InputStream in)
推奨されていません。 JDK 1.1 では、ローカルなエンコーディングのバイトストリームを Unicode の文字ストリームに変換するには、 InputStreamReader クラスと BufferedReader クラスを使う方が適切です。 |
OutputStream |
getLocalizedOutputStream(OutputStream out)
推奨されていません。 JDK 1.1 では、Unicode の文字ストリームをローカルなエンコーディングのバイトストリームに変換するには、 OutputStreamWriter クラス、BufferedWriter クラス、および PrintWriter クラスを使う方が適切です。 |
static Runtime |
getRuntime()
現在の Java アプリケーションに関連した Runtime オブジェクトを返します。 |
void |
halt(int status)
現在実行中の Java Virtual Machine を強制終了します。 |
void |
load(String filename)
指定されたファイル名をダイナミックライブラリとしてロードします。 |
void |
loadLibrary(String libname)
指定されたライブラリ名を持つダイナミックライブラリをロードします。 |
boolean |
removeShutdownHook(Thread hook)
すでに登録した Virtual Machine のシャットダウンフックを登録解除します。 |
void |
runFinalization()
ファイナライズを中断しているオブジェクトの、finalize メソッドを実行します。 |
static void |
runFinalizersOnExit(boolean value)
推奨されていません。 このメソッドは本質的に安全ではありません。ほかのスレッドが同時にそれらのオブジェクトを操作しているときに、生存中のオブジェクトに対してファイナライザが呼び出され、これにより、エラー動作またはデッドロックが発生します。 |
long |
totalMemory()
Java Virtual Machine のメモリの総容量を返します。 |
void |
traceInstructions(boolean on)
命令のトレースを有効または無効にします。 |
void |
traceMethodCalls(boolean on)
メソッド呼び出しのトレースを有効または無効にします。 |
クラス java.lang.Object から継承したメソッド |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
メソッドの詳細 |
public static Runtime getRuntime()
Runtime
クラスのメソッドのほとんどはインスタンスメソッドであり、現在のランタイムオブジェクトに対応して呼び出されなければなりません。Runtime
オブジェクトpublic void exit(int status)
Virtual Machine のシャットダウンシーケンスは 2 つの段階で構成されます。第 1 段階では、すべての登録済みのシャットダウンフック
は (ある場合)、特に指定していない順序で起動し、終了するまで同時に実行することができます。第 2 段階では、呼び出されていないすべてのファイナライザが、終了時のファイナライズ
が有効になっている場合は実行されます。これが終了すると Virtual Machine が停止
します。
Virtual Machine がシャットダウンシーケンスを開始したあとにこのメソッドが呼び出されると、シャットダウンフックがこのメソッドを実行している場合は無期限にブロックされます。シャットダウンフックがすでに実行されており終了時のファイナライズが有効になっているときは、ステータスがゼロ以外の場合は Virtual Machine を指定したステータスコードで停止し、そうでない場合は無期限にブロックします
このメソッドを呼び出すには、System.exit
メソッドが一般的で便利です。
status
- 終了ステータス。通例、ゼロ以外のステータスコードは異常終了を示すSecurityException
- セキュリティマネージャが存在するときに、セキュリティマネージャの checkExit
メソッドが指定されたステータスでの終了を許可しない場合SecurityException
,
SecurityManager.checkExit(int)
,
addShutdownHook(java.lang.Thread)
,
removeShutdownHook(java.lang.Thread)
,
runFinalizersOnExit(boolean)
,
halt(int)
public void addShutdownHook(Thread hook)
2 種類のイベントに応答して Java Virtual Machine をシャットダウンします。
exit
(System.exit
と同等) メソッドが呼び出されると、プログラムは正常に「終了 (exit)」します。
「シャットダウンフック」は初期化されただけで起動していないスレッドです。 Virtual Machine がシャットダウンシーケンスを開始すると、すべての登録済みシャットダウンフックを、指定されていない順序で起動し同時実行します。フックがすべて終了すると、終了時のファイナライズが有効である場合はすべての呼び出されていないファイナライザを実行します。最後に、Virtual Machine は停止します。exit
を呼び出してシャットダウンが開始された場合は、デーモンではないスレッドと同様、デーモンスレッドはシャットダウンシーケンスの間実行を続けます。
一旦シャットダウンシーケンスが起動すると、強制的に Virtual Machine を停止させる halt
メソッドを呼び出した場合のみ中止できます。
一旦シャットダウンシーケンスを起動すると、新しいシャットダウンフックを登録したり、以前に登録したフックの登録を解除したりすることはできません。このようなオペレーションのいずれかを実行しようとすると、IllegalStateException
がスローされます。
シャットダウンフックは Virtual Machine のライフサイクルの微妙な時期に起動するため、コーディングする場合は気を付ける必要があります。特に、スレッドに対して安全に書き込む必要があり、できる限りデッドロックを避ける必要があります。シャットダウンフックを登録したサービスをうのみにせず、シャットダウンが進行中に登録する必要があります。
シャットダウンフックは迅速に終了する必要もあります。プログラムが exit
を呼び出すと、Virtual Machine はただちにシャットダウンして終了するものと見なされます。Virtual Machine がユーザログオフまたはシステムシャットダウンで終了すると、基本となるオペレーティングシステムはシャットダウンまたは終了するまでの一定時間を与えます。したがって、シャットダウンフック中にユーザとの対話処理をしたり長時間の計算をすることはお勧めできません。
キャッチされていない例外は他のスレッドと同様に、スレッドの ThreadGroup
オブジェクトの uncaughtException
メソッドを呼び出してシャットダウンフックで処理されます。このメソッドのデフォルト実装は System.err
への例外スタックトレースを出力しスレッドを停止します。Virtual Machine の終了または停止はしません。
まれなケースとして、Virtual Machine が「異常終了」することがあります。すなわち、シャットダウンが正常に行われずに実行が中止される場合です。これは Virtual Machine が外部で停止された場合に起こります。たとえば、Unix の場合の SIGKILL シグナルまたは、Win32 の場合の TerminateProcess の呼び出しがその例です。Virtual Machine は、たとえば、内部データ構造の破壊、存在しないメモリへのアクセスなどのようにネイティブメソッドが失敗した場合にも異常終了します。Virtual Machine が異常終了するとシャットダウンフックの実行は保証できません。
hook
- 初期化はされたが起動していない Thread
オブジェクトIllegalArgumentException
- 指定したフックが既に登録されている場合、あるいはフックが既に実行中であるかまたは実行が完了したと判定される場合IllegalStateException
- Virtual Machine が既にシャットダウン進行中である場合SecurityException
- セキュリティマネージャが存在し、RuntimePermission
("shutdownHooks") を拒否した場合removeShutdownHook(java.lang.Thread)
,
halt(int)
,
exit(int)
public boolean removeShutdownHook(Thread hook)
hook
- 削除するフックIllegalStateException
- Virtual Machine が既にシャットダウン進行中である場合SecurityException
- セキュリティマネージャが存在し、RuntimePermission
("shutdownHooks") を拒否した場合addShutdownHook(java.lang.Thread)
,
exit(int)
public void halt(int status)
このメソッドの使用には細心の注意が必要です。exit
メソッドとは異なり、このメソッドではシャットダウンフックを起動できず、終了時のファイナライズが有効な場合は呼び出されていないファイナライザを実行しません。既にシャットダウンシーケンスが開始されている場合は、このメソッドは実行中のシャットダウンフックまたはファイナライザを待機しないで終了します。
status
- 終了ステータス。通例、ゼロ以外のステータスコードは異常終了を示す。exit
(System.exit
と同等) メソッドが既に呼び出されている場合は、そのメソッドに渡されたステータスコードをオーバーライドする。SecurityException
- セキュリティマネージャが存在する場合に、セキュリティマネージャの checkExit
メソッドが指定されたステータスでの終了を許可しないときexit(int)
,
addShutdownHook(java.lang.Thread)
,
removeShutdownHook(java.lang.Thread)
public static void runFinalizersOnExit(boolean value)
セキュリティマネージャが存在する場合は、確実に終了が許可されるように、最初に引数を 0 として checkExit
メソッドが呼び出されます。この結果、SecurityException がスローされることがあります。
value
- 終了時のファイナライズを有効にする場合は true、無効にする場合は falseSecurityException
- セキュリティマネージャが存在し、セキュリティマネージャの checkExit
メソッドが終了を許可しない場合exit(int)
,
gc()
,
SecurityManager.checkExit(int)
public Process exec(String command) throws IOException
command
引数はトークンに解析され、その後独立したプロセスとして実行されます。トークンの構文解析は、次の呼び出しで作成される StringTokenizer
が実行します。
このとき、文字カテゴリがこれ以上変更されることはありません。このメソッドの機能はnew StringTokenizer(command)
exec(command, null)
とまったく同じです。command
- 指定されたシステムコマンドProcess
オブジェクトSecurityException
- セキュリティマネージャが存在し、その checkExec
メソッドがサブプロセスの作成を許可しない場合IOException
- 入出力エラーが発生した場合exec(java.lang.String, java.lang.String[])
,
SecurityManager.checkExec(java.lang.String)
public Process exec(String cmd, String[] envp) throws IOException
このメソッドは command
の文字列をトークンに分解してから、トークンを文字列トークナイザで生成された順番に格納する新しい配列 cmdarray
を作成します。その次にメソッドは exec(cmdarray, envp)
という呼び出しを実行します。トークンの構文解析は、次の呼び出しで作成される StringTokenizer
が実行します。
このとき、文字カテゴリがこれ以上変更されることはありません。new StringTokenizer(command)
環境変数設定は envp で指定します。envp が null の場合は、サブプロセスは現在のプロセスの環境設定を継承します。
cmd
- 指定されたシステムコマンドenvp
- 文字列の配列。配列の各要素は、name=value という形式で環境変数設定を保持するProcess
オブジェクトSecurityException
- セキュリティマネージャが存在し、その checkExec
メソッドがサブプロセスの作成を許可しない場合IOException
- 入出力エラーが発生した場合exec(java.lang.String[])
,
exec(java.lang.String[], java.lang.String[])
,
SecurityManager.checkExec(java.lang.String)
public Process exec(String command, String[] envp, File dir) throws IOException
このメソッドは command
の文字列をトークンに分解してから、トークンを文字列トークナイザで生成された順番に格納する新しい配列 cmdarray
を作成します。その次にメソッドは exec(cmdarray, envp)
という呼び出しを実行します。トークンの構文解析は、次の呼び出しで作成される StringTokenizer
が実行します。
このとき、文字カテゴリがこれ以上変更されることはありません。new StringTokenizer(command)
環境変数設定は envp で指定します。envp が null の場合は、サブプロセスは現在のプロセスの環境設定を継承します。
新しいサブプロセスの作業ディレクトリは dir で指定します。dir が null の場合は、サブプロセスは現在のプロセスの現在の作業ディレクトリを継承します。
command
- 指定されたシステムコマンドenvp
- 文字列の配列。配列の各要素は、name=value という形式で環境変数設定を保持するdir
- サブプロセスが現在のプロセスの作業ディレクトリを継承する場合は、サブプロセスの作業ディレクトリ、または nullProcess
オブジェクトSecurityException
- セキュリティマネージャが存在し、その checkExec
メソッドがサブプロセスの作成を許可しない場合IOException
- 入出力エラーが発生した場合exec(java.lang.String[], java.lang.String[], File)
,
SecurityManager.checkExec(java.lang.String)
public Process exec(String[] cmdarray) throws IOException
cmdarray
引数で指定したコマンドトークンは、独立したプロセスでコマンドとして実行されます。このメソッドの機能は exec(cmdarray, null)
とまったく同じです。
セキュリティマネージャが存在する場合、その checkExec
メソッドが、配列 cmdarray
の 1 番目の要素を引数として呼び出されます。この結果、セキュリティ例外が発生する可能性があります。
cmdarray
- 実行するコマンドと引数を含む配列Process
オブジェクトSecurityException
- セキュリティマネージャが存在し、その checkExec
メソッドがサブプロセスの作成を許可しない場合IOException
- 入出力エラーが発生した場合exec(java.lang.String[], java.lang.String[])s
,
SecurityManager.checkExec(java.lang.String)
public Process exec(String[] cmdarray, String[] envp) throws IOException
コマンド行のトークンを表す文字列の配列 cmdarray
、および環境変数の設定を表す文字列の配列 envp
を指定すると、このメソッドは指定されたコマンドを実行するための新しいプロセスを作成します。
envp が null の場合、サブプロセスは現在のプロセスの環境設定を継承します。
cmdarray
- 実行するコマンドと引数を含む配列envp
- 文字列の配列。配列の各要素は、name=value という形式で環境変数設定を保持するProcess
オブジェクトSecurityException
- セキュリティマネージャが存在し、その checkExec
メソッドがサブプロセスの作成を許可しない場合NullPointerException
- cmdarray
が null
の場合IndexOutOfBoundsException
- cmdarray
が長さが 0
の空の配列の場合IOException
- 入出力エラーが発生した場合Process
,
SecurityException
,
SecurityManager.checkExec(java.lang.String)
public Process exec(String[] cmdarray, String[] envp, File dir) throws IOException
セキュリティマネージャが存在する場合、その checkExec
メソッドが、配列 cmdarray
の 1 番目の要素を引数として呼び出されます。この結果、セキュリティ例外が発生する可能性があります。
コマンド行のトークンを表す文字列の配列 cmdarray
、および環境変数の設定を表す文字列の配列 envp
を指定すると、このメソッドは指定されたコマンドを実行するための新しいプロセスを作成します。
envp が null の場合、サブプロセスは現在のプロセスの環境設定を継承します。
新しいサブプロセスの作業ディレクトリは dir で指定します。dir が null の場合は、サブプロセスは現在のプロセスの現在の作業ディレクトリを継承します。
cmdarray
- 実行するコマンドと引数を含む配列envp
- 文字列の配列。配列の各要素は、name=value という形式で環境変数設定を保持するdir
- サブプロセスが現在のプロセスの作業ディレクトリを継承する場合は、サブプロセスの作業ディレクトリ、または nullProcess
オブジェクトSecurityException
- セキュリティマネージャが存在し、その checkExec
メソッドがサブプロセスの作成を許可しない場合NullPointerException
- cmdarray
が null
の場合IndexOutOfBoundsException
- cmdarray
が長さが 0
の空の配列の場合IOException
- 入出力エラーが発生した場合Process
,
SecurityException
,
SecurityManager.checkExec(java.lang.String)
public long freeMemory()
gc
メソッドを呼び出すと、freeMemory
によって返される値が増える場合があります。public long totalMemory()
任意の指定された型のオブジェクトを格納するのに必要なメモリ容量は、実装によって異なります。
public void gc()
gc
というメソッド名は「garbage collector」の頭字をとったものです。gc
が明示的には呼び出されなかった場合でも、Java Virtual Machine はこの再利用プロセスを必要に応じて自動的に、別のスレッドで実行します。
このメソッドを呼び出すには、System.gc()
メソッドが一般的で便利です。
public void runFinalization()
finalize
メソッドが実行されていないオブジェクトの finalize
メソッドを実行しようとします。メソッド呼び出しから制御が戻された時点で、Java Virtual Machine はすべてのファイナライズを完了するよう最善を尽くしたことになります。
runFinalization
メソッドが明示的には呼び出されなかった場合でも、Java Virtual Machine はこのファイナライズプロセスを必要に応じて自動的に、別のスレッドで実行します。
このメソッドを呼び出すには、System.runFinalization()
メソッドが一般的で便利です。
Object.finalize()
public void traceInstructions(boolean on)
boolean
引数が true
である場合、このメソッドを呼び出すと、Java Virtual Machine は、Java Virtual Machine 内の各命令のデバッグ情報を命令の実行の時点で出力します。この情報の書式や、出力先となるファイルなどの出力ストリームは、ホスト環境によって異なります。この機能をサポートしない場合、Java Virtual Machine は要求を無視する場合があります。トレースの出力先はシステムによって異なります。
boolean
引数に false
を指定すると、Java Virtual Machine は命令の詳細トレースの出力を停止します。
on
- 命令のトレースを有効にする場合は true
、この機能を無効にする場合は false
public void traceMethodCalls(boolean on)
boolean
引数が true
である場合、このメソッドを呼び出すと、Java Virtual Machine は、Java Virtual Machine 内の各メソッドのデバッグ情報をそのメソッド呼び出しの時点で出力します。この情報の書式や、出力先となるファイルなどの出力ストリームは、ホスト環境によって異なります。この機能をサポートしない場合、Java Virtual Machine は要求を無視する場合があります。
引数を false にしてこのメソッドを呼び出すと、Java Virtual Machine は、呼び出しごとのデバッグ情報の出力を停止します。
on
- メソッドのトレースを行う場合は true
、この機能を無効にする場合は false
public void load(String filename)
java_g
から利用すると、「.so」の前に「_g」が自動的に挿入されます (Runtime.getRuntime().load("/home/avh/lib/libX11.so");
など)。
まず、セキュリティマネージャが存在する場合、その checkLink
メソッドを呼び出します。引数には filename
を指定します。この結果、セキュリティ例外がスローされる場合があります。
checkLink メソッドは loadLibrary(String)
メソッドと似ていますが、ライブラリ名ではなく一般的なファイル名を引数として指定できるため、ネイティブコードで書かれた任意のファイルがロード可能になります。
このメソッドを呼び出すには、System.load(String)
メソッドが一般的で便利です
filename
- ロードするファイルSecurityException
- セキュリティマネージャが存在し、セキュリティマネージャの checkLink
メソッドが、指定されたダイナミックライブラリのロードを許可しない場合UnsatisfiedLinkError
- ファイルが存在しない場合getRuntime()
,
SecurityException
,
SecurityManager.checkLink(java.lang.String)
public void loadLibrary(String libname)
まず、セキュリティマネージャが存在する場合、その checkLink
メソッドを呼び出します。引数には libname
を指定します。この結果、セキュリティ例外がスローされる場合があります。
このメソッドを呼び出すには、System.loadLibrary(String)
メソッドが一般的で便利です。ネイティブメソッドをクラスの実装で使用する場合、標準的には、ネイティブコードをライブラリファイル (ここでは、説明上 LibFile
とする) に入れてから、クラス宣言に次の static 初期化子を入れます。
こうすれば、クラスがロードおよび初期化される時、ネイティブメソッドに必要なネイティブコードの実装も同じようにロードされます。static { System.loadLibrary("LibFile"); }
同じライブラリ名を指定してこのメソッドを複数回呼び出しても、2 回目以降の呼び出しは無視されます。
libname
- ライブラリの名前SecurityException
- セキュリティマネージャが存在し、セキュリティマネージャの checkLink
メソッドが、指定されたダイナミックライブラリのロードを許可しない場合UnsatisfiedLinkError
- ライブラリが存在しない場合SecurityException
,
SecurityManager.checkLink(java.lang.String)
public InputStream getLocalizedInputStream(InputStream in)
InputStreamReader
クラスと BufferedReader
クラスを使う方が適切です。
InputStream
を受け取り、地域対応されている以外は引数のストリームとまったく同じである InputStream
を返します。ローカル文字セットの文字をストリームから読み込む際には、ローカル文字セットから Unicode に自動的に変換します。
引数に指定したストリームが地域対応済みである場合は、そのまま結果として返されます。
in
- 地域対応する InputStreamInputStream
,
BufferedReader.BufferedReader(java.io.Reader)
,
InputStreamReader.InputStreamReader(java.io.InputStream)
public OutputStream getLocalizedOutputStream(OutputStream out)
OutputStreamWriter
クラス、BufferedWriter
クラス、および PrintWriter
クラスを使う方が適切です。
OutputStream
を受け取り、地域対応されている以外は引数のストリームとまったく同じである OutputStream
を返します。Unicode をストリームに書き込む際には、Unicode からローカル文字セットに自動的に変換します。
引数に指定したストリームが地域対応済みである場合は、そのまま結果として返されます。
out
- 地域対応する OutputStreamOutputStream
,
BufferedWriter.BufferedWriter(java.io.Writer)
,
OutputStreamWriter.OutputStreamWriter(java.io.OutputStream)
,
PrintWriter.PrintWriter(java.io.OutputStream)
|
JavaTM 2 Platform Std. Ed. v1.3 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.