public class Runtime extends Object
Runtimeクラスの単一のインスタンスを持ちます。このクラスは、アプリケーションとアプリケーション実行環境とのインタフェースになります。 現在のRuntimeオブジェクトは、getRuntimeメソッドにより取得できます。
アプリケーションは、このクラスの独自のインスタンスを生成することはできません。
getRuntime()| 修飾子と型 | メソッド | 説明 |
|---|---|---|
void |
addShutdownHook(Thread hook) |
新しい仮想マシンのシャットダウン・フックを登録します。
|
int |
availableProcessors() |
Java仮想マシンが使用できるプロセッサの数を返します。
|
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 command, String[] envp) |
指定された文字列コマンドを、指定された環境を持つ独立したプロセスで実行します。
|
Process |
exec(String command, String[] envp, File dir) |
指定された文字列コマンドを、指定された環境と作業ディレクトリを持つ独立したプロセスで実行します。
|
void |
exit(int status) |
現在実行しているJava仮想マシンを、シャットダウン・シーケンスを開始して終了します。
|
long |
freeMemory() |
Java仮想マシン内の空きメモリーの量を返します。
|
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仮想マシンを強制終了します。
|
void |
load(String filename) |
filename引数によって指定されたネイティブ・ライブラリをロードします。
|
void |
loadLibrary(String libname) |
引数
libnameによって指定されるネイティブ・ライブラリをロードします。 |
long |
maxMemory() |
Java仮想マシンが使用を試みる最大メモリー容量を返します。
|
boolean |
removeShutdownHook(Thread hook) |
すでに登録した仮想マシンのシャットダウン・フックを登録解除します。
|
void |
runFinalization() |
ファイナライズを保留しているオブジェクトのファイナライズ・メソッドを実行します。
|
static void |
runFinalizersOnExit(boolean value) |
非推奨。
このメソッドは、もともと終了時にファイナライザの実行を有効または無効にするように設計されています。 終了時のファイナライザの実行は、デフォルトでは無効になっています。 有効にすると、ファイナライザがまだ自動起動されていないすべてのオブジェクトのファイナライザは、Javaランタイムが終了する前に実行されます。 その動作は本質的に安全ではありません。 ファイナライザがライブ・オブジェクトに対して呼び出される結果になる可能性があり、そのときにほかのスレッドがそれらのオブジェクトを並行して操作していると、動作が異常になるか、デッドロックが発生します。
|
long |
totalMemory() |
Java仮想マシンのメモリーの総容量を返します。
|
void |
traceInstructions(boolean on) |
命令のトレースを有効または無効にします。
|
void |
traceMethodCalls(boolean on) |
メソッド呼出しのトレースを有効または無効にします。
|
public static Runtime getRuntime()
Runtimeクラスのメソッドのほとんどはインスタンス・メソッドであり、現在のランタイム・オブジェクトに対応して呼び出されなければいけません。 Runtimeオブジェクト。public void exit(int status)
登録済「シャットダウン・フック」がある場合は、未指定の順序で起動し、終了するまで同時に実行できます。 これが行われると、仮想マシンが停止します。
すべてのシャットダウン・フックがすでに実行された後にこのメソッドが呼び出され、ステータスが0 (ゼロ)以外になった場合、このメソッドは指定されたステータス・コードで仮想マシンを停止します。 それ以外の場合、このメソッドは無期限にブロックされます。
System.exitメソッドは、このメソッドを呼び出す従来の便利な手段です。
status - 終了ステータス。 通例、ゼロ以外のステータス・コードは異常終了を示す。 SecurityException - セキュリティ・マネージャが存在し、そのcheckExitメソッドが指定されたステータスで終了することを許可しない場合SecurityException, SecurityManager.checkExit(int), addShutdownHook(java.lang.Thread), removeShutdownHook(java.lang.Thread), halt(int)public void addShutdownHook(Thread hook)
2種類のイベントに応答してJava仮想マシンをシャットダウンします。
exit (同等に、System.exit)メソッドが呼び出されたとき、または
^Cの入力などによるユーザー割り込みや、ユーザー・ログオフまたはシステム・シャットダウンのようなシステム全体のイベントに応答して終了(terminate)します。
シャットダウン・フックは初期化されただけで起動していないスレッドです。 仮想マシンがシャットダウン・シーケンスを開始すると、すべての登録済みシャットダウン・フックを、指定されていない順序で起動し並行して実行します。 すべてのフックが終了すると、フックは停止します。 exitメソッドを呼び出すことによってシャットダウンが開始された場合、非デーモン・スレッドと同様に、デーモン・スレッドはシャットダウン・シーケンス中に実行され続けることに注意してください。
シャットダウン・シーケンスが開始されると、強制的に仮想マシンを終了するhaltメソッドを呼び出すことによってのみ停止シーケンスを停止できます。
いったんシャットダウン・シーケンスを起動すると、新しいシャットダウン・フックを登録したり、以前に登録したフックの登録を解除したりすることはできません。 これらの操作のいずれかを試行すると、IllegalStateExceptionがスローされます。
シャットダウン・フックは仮想マシンのライフ・サイクルの微妙な時期に起動するため、コーディングする場合は気を付ける必要があります。 特に、スレッドセーフに書き込む必要があり、できるかぎりデッドロックを避ける必要があります。 シャットダウン・フックを登録したサービスをうのみにせず、シャットダウンが進行中に登録する必要があります。 AWTイベント・ディスパッチ・スレッドなど、スレッド・ベースのその他のサービスを使用しようとすると、デッドロックが発生することがあります。
シャットダウン・フックは迅速に終了する必要もあります。 プログラムがexitを呼び出すと、仮想マシンがすぐにシャットダウンして終了することが予想されます。 仮想マシンがユーザー・ログオフまたはシステム・シャットダウンで終了すると、基本となるオペレーティング・システムはシャットダウンまたは終了するまでの一定時間を与えます。 したがって、シャットダウン・フック中にユーザーとの対話処理をしたり長時間の計算をすることはお薦めできません。
キャッチされない例外は、他のスレッドと同様に、スレッドThreadGroupオブジェクトのuncaughtExceptionメソッドを呼び出すことによって、シャットダウン・フックで処理されます。 このメソッドのデフォルト実装では、System.errへの例外スタック・トレースを出力し、スレッドを停止します。仮想マシンの終了または停止はしません。
まれなケースとして、仮想マシンが異常終了することがあります。つまり、シャットダウンが正常に行われずに実行が中止される場合です。 これは仮想マシンが外部で停止された場合に起こります。たとえば、Unixの場合のSIGKILLシグナルまたは、Microsoft Windowsの場合のTerminateProcessの呼出しがその例です。 仮想マシンは、たとえば、内部データ構造の破壊、存在しないメモリーへのアクセスなどのようにネイティブ・メソッドが失敗した場合にも異常終了します。 仮想マシンが異常終了するとシャットダウン・フックの実行は保証できません。
hook - 初期化されているが起動していないThreadオブジェクトIllegalArgumentException - 指定したフックがすでに登録されている場合、あるいはフックがすでに実行中であるかまたは実行が完了したと判定される場合IllegalStateException - 仮想マシンがすでにシャットダウン進行中である場合SecurityException - セキュリティ・マネージャが存在し、RuntimePermission("shutdownHooks")が拒否される場合removeShutdownHook(java.lang.Thread), halt(int), exit(int)public boolean removeShutdownHook(Thread hook)
hook - 削除するフックIllegalStateException - 仮想マシンがすでにシャットダウン進行中である場合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)@Deprecated public static void runFinalizersOnExit(boolean value)
UnsupportedOperationExceptionをスローします。value - 無視public Process exec(String command) throws IOException
これは、簡易メソッドです。 exec(command)形式の呼出しの動作は、呼び出しexec(command, null, null)とまったく同じになります。
command - 指定されたシステム・コマンド。ProcessオブジェクトSecurityException - セキュリティ・マネージャが存在し、そのcheckExecメソッドがサブプロセスの作成を許可しない場合IOException - 入出力エラーが発生した場合NullPointerException - commandがnullの場合IllegalArgumentException - commandが空の場合exec(String[], String[], File), ProcessBuilderpublic Process exec(String command, String[] envp) throws IOException
これは、簡易メソッドです。 exec(command, envp)形式の呼出しの動作は、呼び出しexec(command, envp, null)とまったく同じになります。
command - 指定されたシステム・コマンド。envp - 文字列の配列。配列の各要素は、name=valueという形式で環境変数設定を保持する。または、サブプロセスが現在のプロセスの環境を継承する場合はnull。ProcessオブジェクトSecurityException - セキュリティ・マネージャが存在し、そのcheckExecメソッドがサブプロセスの作成を許可しない場合IOException - 入出力エラーが発生した場合NullPointerException - commandがnullの場合、またはenvpのいずれかの要素がnullの場合IllegalArgumentException - commandが空の場合exec(String[], String[], File), ProcessBuilderpublic Process exec(String command, String[] envp, File dir) throws IOException
これは、簡易メソッドです。 exec(command, envp, dir)形式の呼出しの動作は、呼び出しexec(cmdarray, envp, dir)とまったく同じになります(cmdarrayはcommand内のすべてのトークンを含む配列)。
より正確には、呼び出しnew で作成したStringTokenizer(command)StringTokenizerを使ってcommand文字列がトークンに分割されますが、その際、文字カテゴリのさらなる変更は行われません。 トークナイザで生成されたトークンは、同じ順序で新規文字列配列のcmdarrayに配置されます。
command - 指定されたシステム・コマンド。envp - 文字列の配列。配列の各要素は、name=valueという形式で環境変数設定を保持する。または、サブプロセスが現在のプロセスの環境を継承する場合はnull。dir - サブプロセスの作業ディレクトリ。サブプロセスが現在のプロセスの作業ディレクトリを継承する場合はnull。ProcessオブジェクトSecurityException - セキュリティ・マネージャが存在し、そのcheckExecメソッドがサブプロセスの作成を許可しない場合IOException - 入出力エラーが発生した場合NullPointerException - commandがnullの場合、またはenvpのいずれかの要素がnullの場合IllegalArgumentException - commandが空の場合ProcessBuilderpublic Process exec(String[] cmdarray) throws IOException
これは、簡易メソッドです。 exec(cmdarray)形式の呼出しの動作は、呼び出しexec(cmdarray, null, null)とまったく同じになります。
cmdarray - 実行するコマンドと引数を含む配列。ProcessオブジェクトSecurityException - セキュリティ・マネージャが存在し、そのcheckExecメソッドがサブプロセスの作成を許可しない場合IOException - 入出力エラーが発生した場合NullPointerException - cmdarrayがnullの場合、またはcmdarrayのいずれかの要素がnullの場合IndexOutOfBoundsException - cmdarrayが長さ0の空の配列の場合ProcessBuilderpublic Process exec(String[] cmdarray, String[] envp) throws IOException
これは、簡易メソッドです。 exec(cmdarray, envp)形式の呼出しの動作は、呼び出しexec(cmdarray, envp, null)とまったく同じになります。
cmdarray - 実行するコマンドと引数を含む配列。envp - 文字列の配列。配列の各要素は、name=valueという形式で環境変数設定を保持する。または、サブプロセスが現在のプロセスの環境を継承する場合はnull。ProcessオブジェクトSecurityException - セキュリティ・マネージャが存在し、そのcheckExecメソッドがサブプロセスの作成を許可しない場合IOException - 入出力エラーが発生した場合NullPointerException - cmdarrayがnullの場合、cmdarrayのいずれかの要素がnullの場合、またはenvpのいずれかの要素がnullの場合IndexOutOfBoundsException - cmdarrayが長さ0の空の配列の場合ProcessBuilderpublic Process exec(String[] cmdarray, String[] envp, File dir) throws IOException
コマンド行のトークンを表す文字列の配列cmdarray、および環境変数の設定を表す文字列の配列envpを指定すると、このメソッドは指定されたコマンドを実行するための新しいプロセスを作成します。
このメソッドは、cmdarrayが有効なオペレーティング・システム・コマンドであることを確認します。 どのコマンドが有効かはシステム依存ですが、コマンドは少なくともnull以外の文字列の空でないリストである必要があります。
envpがnullの場合、サブプロセスは現在のプロセスの環境設定を継承します。
一部のオペレーティング・システムでは、プロセスを起動するために最小限のシステム依存環境変数のセットが必要となる可能性があります。 このため、指定された環境に含まれていない追加の環境変数設定をサブプロセスが継承する可能性があります。
現在、ProcessBuilder.start()は、変更された環境を持つプロセスを起動する方法として推奨されています。
新しいサブプロセスの作業ディレクトリはdirで指定します。 dirがnullの場合、サブプロセスは現在のプロセスの現在の作業ディレクトリを継承します。
セキュリティ・マネージャが存在する場合、そのcheckExecメソッドが、配列cmdarrayの最初のコンポーネントを引数に指定して呼び出されます。 これにより、SecurityExceptionがスローされる可能性があります。
オペレーティング・システム・プロセスの起動はきわめてシステムに依存します。 発生する可能性がある不具合は次のとおりです。
以上のケースでは、例外がスローされます。 例外の正確な特性はシステムに依存しますが、これは常にIOExceptionのサブクラスになります。
cmdarray - 実行するコマンドと引数を含む配列。envp - 文字列の配列。配列の各要素は、name=valueという形式で環境変数設定を保持する。または、サブプロセスが現在のプロセスの環境を継承する場合はnull。dir - サブプロセスの作業ディレクトリ。サブプロセスが現在のプロセスの作業ディレクトリを継承する場合はnull。ProcessオブジェクトSecurityException - セキュリティ・マネージャが存在し、そのcheckExecメソッドがサブプロセスの作成を許可しない場合IOException - 入出力エラーが発生した場合NullPointerException - cmdarrayがnullの場合、cmdarrayのいずれかの要素がnullの場合、またはenvpのいずれかの要素がnullの場合IndexOutOfBoundsException - cmdarrayが長さ0の空の配列の場合ProcessBuilderpublic int availableProcessors()
この値は、仮想マシンの呼出し中に変更される可能性があります。 このため、利用可能なプロセッサ数に影響を受けるアプリケーションは、このプロパティをときどきポーリングして、リソース使用法を調整する必要があります。
public long freeMemory()
gcメソッドを呼び出すと、freeMemoryから返される値が増える可能性があります public long totalMemory()
任意の指定された型のオブジェクトを格納するのに必要なメモリー容量は、実装によって異なります。
public long maxMemory()
Long.MAX_VALUEが返されます。 public void gc()
gcというメソッド名は「garbage collector」の頭字をとったものです。 gcが明示的には呼び出されなかった場合でも、仮想マシンはこの再利用プロセスを必要に応じて自動的に、別のスレッドで実行します。
このメソッドを呼び出すには、System.gc()メソッドが一般的で便利です。
public void runFinalization()
finalizeメソッドが実行されていないオブジェクトのfinalizeメソッドを実行しようとします。 メソッド呼び出しから制御が戻された時点で、仮想マシンはすべてのファイナライズを完了するよう最善を尽くしたことになります。
runFinalizationメソッドが明示的には呼び出されなかった場合でも、仮想マシンはこのファイナライズ・プロセスを必要に応じて自動的に、別のスレッドで実行します。
このメソッドを呼び出すには、System.runFinalization()メソッドが一般的で便利です。
Object.finalize()public void traceInstructions(boolean on)
boolean引数がtrueである場合、このメソッドを呼び出すと、Java仮想マシンは、仮想マシン内の各命令のデバッグ情報を実行時に出力します。 この情報の書式や、出力先となるファイルなどの出力ストリームは、ホスト環境によって異なります。 この機能をサポートしない場合、仮想マシンは要求を無視する場合があります。 トレースの出力先はシステムによって異なります。
boolean引数にfalseを指定すると、仮想マシンは命令の詳細トレースの出力を停止します。
on - 命令のトレースを有効にする場合はtrue、この機能を無効にする場合はfalse。public void traceMethodCalls(boolean on)
boolean引数がtrueである場合、このメソッドを呼び出すと、Java仮想マシンは、仮想マシン内の各メソッドのデバッグ情報を呼出し時に出力します。 この情報の書式や、出力先となるファイルなどの出力ストリームは、ホスト環境によって異なります。 この機能をサポートしない場合、仮想マシンは要求を無視する場合があります。
引数をfalseにしてこのメソッドを呼び出すと、仮想マシンは、呼び出しごとのデバッグ情報の出力を停止します。
on - 命令のトレースを有効にする場合はtrue、この機能を無効にする場合はfalse。public void load(String filename)
Runtime.getRuntime().load("/home/avh/lib/libX11.so");)。 filename引数(プラットフォーム固有のライブラリ接頭辞、パス、およびファイル拡張子がすべて取り除かれている場合)が、たとえばLという名前のライブラリを示し、Lというネイティブ・ライブラリがVMと静的にリンクされている場合は、ダイナミック・ライブラリのロードを試みるのではなく、そのライブラリによってエクスポートされるJNI_OnLoad_L関数が呼び出されます。 その引数と一致するファイル名がファイル・システム内に存在する必要はありません。 詳細は、「JNI仕様」を参照してください。 それ以外の場合、filename引数は実装に依存した方法でネイティブ・ライブラリ・イメージにマップされます。
まず、セキュリティ・マネージャが存在する場合は、checkLinkメソッドがfilenameをその引数に指定して呼び出されます。 これはセキュリティ例外となる場合があります。
これはloadLibrary(String)メソッドと似ていますが、ライブラリ名ではなく一般的なファイル名を引数として指定できるため、ネイティブ・コードで書かれた任意のファイルがロード可能になります。
このメソッドを呼び出すには、System.load(String)メソッドが一般的で便利です。
filename - ロードするファイル。SecurityException - セキュリティ・マネージャが存在し、そのcheckLinkメソッドが、指定されたダイナミック・ライブラリのロードを許可しない場合UnsatisfiedLinkError - filenameが絶対パス名でない場合、ネイティブ・ライブラリがVMと静的にリンクされていない場合、またはホスト・システムがそのライブラリをネイティブ・ライブラリ・イメージにマップできない場合。NullPointerException - filenameがnullである場合getRuntime()、SecurityException, SecurityManager.checkLink(java.lang.String)public void loadLibrary(String libname)
libnameによって指定されるネイティブ・ライブラリをロードします。 libname引数には、プラットフォーム固有の接頭辞、ファイル拡張子、またはパスを含めないでください。 libnameというネイティブ・ライブラリがVMと静的にリンクされている場合は、そのライブラリによってエクスポートされるJNI_OnLoad_libname関数が呼び出されます。 詳細は、「JNI仕様」を参照してください。 それ以外の場合、libname引数はシステム・ライブラリの場所からロードされ、実装に依存した方法でネイティブ・ライブラリ・イメージにマップされます。
まず、セキュリティ・マネージャが存在する場合は、checkLinkメソッドがlibnameをその引数に指定して呼び出されます。 これはセキュリティ例外となる場合があります。
このメソッドを呼び出すには、System.loadLibrary(String)メソッドが一般的で便利です。 ネイティブ・メソッドをクラスの実装で使用する場合、標準的には、ネイティブ・コードをライブラリ・ファイル(ここでは、説明上LibFileとする)に入れてから、次のstatic初期化子を、
static { System.loadLibrary("LibFile"); }
クラス宣言に入れます。 こうすれば、クラスがロードおよび初期化されるとき、ネイティブ・メソッドに必要なネイティブ・コードの実装も同じようにロードされます。
同じライブラリ名を指定してこのメソッドを複数回呼び出しても、2回目以降の呼出しは無視されます。
libname - ライブラリの名前。SecurityException - セキュリティ・マネージャが存在し、そのcheckLinkメソッドが、指定されたダイナミック・ライブラリのロードを許可しない場合UnsatisfiedLinkError - libname引数にファイル・パスが含まれている場合、ネイティブ・ライブラリがVMと静的にリンクされていない場合、またはホスト・システムがそのライブラリをネイティブ・ライブラリ・イメージにマップできない場合。NullPointerException - libnameがnullである場合SecurityException, SecurityManager.checkLink(java.lang.String)@Deprecated public InputStream getLocalizedInputStream(InputStream in)
InputStreamReaderおよびBufferedReaderクラスを使うことが推奨されています。 InputStreamを受け取り、ローカライズされている以外は引数のストリームとまったく同じであるInputStreamを返します。ローカル文字セットの文字をストリームから読み込む際には、ローカル文字セットからUnicodeに自動的に変換します。
引数に指定したストリームが地域対応済みである場合は、そのまま結果として返されます。
in - 地域対応するInputStreamInputStream, BufferedReader.BufferedReader(java.io.Reader), InputStreamReader.InputStreamReader(java.io.InputStream)@Deprecated 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) バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。