public class Runtime extends Object
Runtime
,允许应用程序与环境中运行应用程序接口的一个实例。目前的运行时间可以从
getRuntime
方法得到的。
一个应用程序无法创建该类的自己的实例。
getRuntime()
Modifier and Type | Method and Description |
---|---|
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运行时对象。
|
void |
halt(int status)
强行终止正在运行的java虚拟机。
|
void |
load(String filename)
加载由文件名参数指定的本地库。
|
void |
loadLibrary(String libname)
负载的
libname 参数指定的本地库。
|
long |
maxMemory()
返回,java虚拟机将使用的最大内存量。
|
boolean |
removeShutdownHook(Thread hook)
去注册一个以前注册的虚拟机关机钩子。
|
void |
runFinalization()
运行任何对象待定型的定型方法。
|
static void |
runFinalizersOnExit(boolean value)
过时的。
这种方法本质上是不安全的。这可能会导致在终结器被称为活的对象而其他线程同时操作这些对象,导致不稳定的行为或死锁。
|
long |
totalMemory()
返回的内存总量在java虚拟机。
|
void |
traceInstructions(boolean on)
启用/禁用指令的跟踪。
|
void |
traceMethodCalls(boolean on)
启用/禁用方法调用的跟踪。
|
public static Runtime getRuntime()
Runtime
方法是实例方法,必须对目前的运行时对象调用。
Runtime
对象。
public void exit(int status)
虚拟机的关机顺序由两个阶段组成。在第一阶段,所有注册shutdown hooks
,如果有的话,也开始在一些指定的顺序,允许同时运行,直到他们完成。在第二阶段,所有未被恳求的终结运行如果finalization-on-exit
已启用。一旦这个完成的虚拟机halts
。
如果该方法在虚拟机已开始其关闭程序之后调用,那么如果正在运行该方法,该方法将不被无限期地运行下去。如果关闭钩子已经运行和退出终结已启用此方法停止虚拟机的状态代码,如果状态为零;否则,那块地。
的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)
针对两种事件java虚拟机零关闭:
exit
(等价地,System.exit
)方法被调用,或者空关闭钩子是一个简单的初始化,但尚未启动的线程。当虚拟机开始它的关机序列,它将启动所有注册的关闭钩子在一些未指定的顺序,让他们同时运行。当所有的钩子已经完成然后如果已启用退出终结,终结器运行所有未被恳求的。最后,虚拟机将停止。注意,守护线程将继续运行,停机顺序中,将非守护线程如果关闭是通过调用exit
方法启动。
一旦开始了关闭序列,它只能通过调用halt
方法停止,并强行终止虚拟机。
一旦关闭序列已开始,它是不可能的注册一个新的关机钩子或去注册一个以前注册的钩子。在这些操作中的任一操作将导致IllegalStateException
被。
关闭挂钩运行在一个虚拟机的生命周期的一个微妙的时刻,因此应该被编码的防守。他们应该,尤其被写成线程安全的,尽可能避免死锁。他们也不应该盲目依赖于服务,可能已经注册了自己的关闭挂钩,因此可能自己在关闭的过程中。尝试使用其他线程的基础服务如awt事件调度线程,例如,可能导致死锁。
关闭钩子也应该快速完成他们的工作。当一个程序调用exit
期望的是,虚拟机将立即关闭和退出。当虚拟机由于用户注销或关闭系统底层操作系统可能只允许在固定的时间内关闭和退出终止。因此,不宜尝试任何用户交互或在关闭钩子执行长期运行的计算。
未捕获的异常处理的关闭挂钩,就像在任何其他的线程通过调用线程的ThreadGroup
对象的uncaughtException
方法。此方法的默认实现打印异常堆栈跟踪System.err
和终止线程;它不会导致虚拟机退出或暂停。
在罕见的情况下,虚拟机可能会空中止,即没有完全关闭就停止运行。这是发生在虚拟机终止外,例如在UNIX或TerminateProcess呼吁微软Windows SIGKILL信号。虚拟机也可以中止如果一个本地方法出错,例如,内部数据结构损坏或试图访问不存在的内存。如果虚拟机中止,则无法保证是否将运行关闭挂钩。
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)
如果存在安全管理器,它的checkExit
方法是先叫0确保出口允许其论点。这可能导致SecurityException。
value
真使退出终结,假禁用
SecurityException
-如果存在一个安全管理及其
checkExit
方法不允许退出。
exit(int)
,
gc()
,
SecurityManager.checkExit(int)
public Process exec(String command) throws IOException
这是一个方便的方法。表格的exec(command)调用的行为一样,调用exec
(command, null, null)。
command
-指定的系统命令。
Process
对象
SecurityException
-如果存在一个安全管理及其
checkExec
方法不允许子进程的创建
IOException
如果I/O错误发生
null
command
NullPointerException
IllegalArgumentException
-如果
command
是空的
exec(String[], String[], File)
,
ProcessBuilder
public Process exec(String command, String[] envp) throws IOException
这是一个方便的方法。表格的exec(command, envp)调用的行为一样,调用exec
(command, envp, null)。
command
-指定的系统命令。
envp
-字符串数组,其中每个元素的格式无效名称= null价值环境变量的设置,或
null如果子进程继承当前进程的环境。
Process
对象
SecurityException
-如果存在一个安全管理及其
checkExec
方法不允许子进程的创建
IOException
如果I/O错误发生
NullPointerException
-如果
command
是
null
,或一对
envp
元素是
null
IllegalArgumentException
-如果
command
是空的
exec(String[], String[], File)
,
ProcessBuilder
public Process exec(String command, String[] envp, File dir) throws IOException
这是一个方便的方法。表格的exec(command, envp, dir)调用的行为一样,调用exec
(cmdarray, envp, dir),哪里cmdarray
是数组中的所有标记command
。
更确切地说,这command
字符串分成符号的使用StringTokenizer
没有进一步修改的字符类的调用new
创建。通过分解器产生的令牌,然后放在新的字符串数组StringTokenizer
(command)cmdarray
,以相同的顺序。
command
-指定的系统命令。
envp
-字符串数组,其中每个元素的格式无效名称= null价值环境变量的设置,或
null如果子进程继承当前进程的环境。
dir
-子进程的工作目录,或
null如果子进程继承当前进程的工作目录。
Process
对象
SecurityException
-如果存在一个安全管理及其
checkExec
方法不允许子进程的创建
IOException
如果I/O错误发生
NullPointerException
-如果
command
是
null
,或一对
envp
元素是
null
IllegalArgumentException
-如果
command
是空的
ProcessBuilder
public Process exec(String[] cmdarray) throws IOException
这是一个方便的方法。表格的exec(cmdarray)调用的行为一样,调用exec
(cmdarray, null, null)。
cmdarray
含有命令数组调用及其参数。
Process
对象
SecurityException
-如果存在一个安全管理及其
checkExec
方法不允许子进程的创建
IOException
如果I/O错误发生
NullPointerException
-如果
cmdarray
是
null
,或一对
cmdarray
元素是
null
IndexOutOfBoundsException
-如果
cmdarray
是空数组(长度
0
)
ProcessBuilder
public Process exec(String[] cmdarray, String[] envp) throws IOException
这是一个方便的方法。表格的exec(cmdarray, envp)调用的行为一样,调用exec
(cmdarray, envp, null)。
cmdarray
含有命令数组调用及其参数。
envp
-字符串数组,其中每个元素的格式无效名称= null价值环境变量的设置,或
null如果子进程继承当前进程的环境。
Process
对象
SecurityException
-如果存在一个安全管理及其
checkExec
方法不允许子进程的创建
IOException
如果I/O错误发生
NullPointerException
-如果
cmdarray
是
null
,或一对
cmdarray
元素是
null
,或一对
envp
元素是
null
IndexOutOfBoundsException
-如果
cmdarray
是空数组(长度
0
)
ProcessBuilder
public Process exec(String[] cmdarray, String[] envp, File dir) throws IOException
给定的字符串cmdarray
数组,表示一个命令行标记,和envp
字符串数组,表示环境变量的设置,此方法创建在一个新的进程来执行指定的命令。
这种方法检查cmdarray
是一个有效的操作系统命令。哪个命令是有效的是系统依赖,但在最起码的命令必须是一个非空的列表的非空字符串。
如果envp是null,子进程继承了当前进程的环境设置。
在一些操作系统上需要一个最小的系统依赖环境变量来启动一个进程。作为一个结果,这一过程可以承受额外的环境变量的设置以外的指定的环境。
ProcessBuilder.start()
现在开始一个过程改进环境的首选方式。
新的子进程的工作目录是由指定dir。如果dir是null,子进程继承了当前进程的当前工作目录。
如果存在一个安全管理,其checkExec
方法与阵列的cmdarray
第一组件作为参数调用。这可能会导致SecurityException
抛出。
启动一个操作系统的过程是高度依赖于系统的。在许多事情可能出错的是:
在这种情况下,将抛出一个异常。异常的确切性质是依赖于系统,但它将永远是IOException
子类。
cmdarray
数组包含命令调用及其参数。
envp
-字符串数组,其中每个元素的格式无效名称= null价值环境变量的设置,或
null如果子进程继承当前进程的环境。
dir
-子进程的工作目录,或
null如果子进程继承当前进程的工作目录。
Process
对象
SecurityException
-如果存在一个安全管理及其
checkExec
方法不允许子进程的创建
IOException
如果I/O错误发生
NullPointerException
-如果
cmdarray
是
null
,或一对
cmdarray
元素是
null
,或一对
envp
元素是
null
IndexOutOfBoundsException
-如果
cmdarray
是空数组(长度
0
)
ProcessBuilder
public int availableProcessors()
此值可能在虚拟机的特定调用期间更改。可用的处理器的数量是敏感的应用程序,因此,偶尔会轮询这个属性,并适当调整他们的资源使用。
public long freeMemory()
gc
方法可能会导致增加的返回值
freeMemory.
public long totalMemory()
请注意,持有任何给定类型的对象所需的内存量可能是依赖于实现的。
public long maxMemory()
Long.MAX_VALUE
。
public void gc()
名称gc
代表“垃圾收集器”。虚拟机执行此自动回收过程的需要,在一个单独的线程中,即使gc
方法没有显式调用。
方法System.gc()
是传统的和方便的调用这个方法。
public void runFinalization()
finalize
方法尚未运行对象的
finalize
方法。当控制从方法调用返回时,虚拟机已经尽了最大努力去完成所有未finalizations。
虚拟机执行定型过程中自动根据需要,在一个单独的线程,如果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虚拟机发出调试信息的每个方法在虚拟机被称为。此信息的格式,以及它所发出的文件或其他输出流,取决于主机环境。如果虚拟机不支持此功能,则可能会忽略此请求。
调用此方法与参数错误表明,虚拟机停止每次调用调试信息。
on
-
true
使指令跟踪;
false
禁用此功能。
public void load(String filename)
Runtime.getRuntime().load("/home/avh/lib/libX11.so");
)。如果文件名的说法,在没有任何特定于平台的库前缀,路径和文件扩展名,表示一个库的名字,例如,L,和本地库是静态的虚拟机相连,然后jni_onload_l函数库导出的调用而不是试图加载动态库。一个匹配该参数的文件名不必在文件系统中存在。看到JNI规范的更多细节。否则,将文件名参数映射到一个依赖于实现的方式中的本地库映像。
首先,如果存在安全管理器,它的checkLink
方法被调用的filename
作为参数。这可能会导致安全异常。
这是类似的方法loadLibrary(String)
,但它接受一般的文件名作为参数而不是一个图书馆的名字,允许任何文件代码被加载。
方法System.load(String)
是传统的和方便的调用这个方法。
filename
-加载的文件。
SecurityException
-如果存在一个安全管理及其
checkLink
方法不允许指定的动态库的加载
UnsatisfiedLinkError
-如果文件不是一个绝对路径名,当地的图书馆是不是与VM的静态链接库,或不能通过主机系统映射到本地的图书馆形象。
null
filename
NullPointerException
getRuntime()
,
SecurityException
,
SecurityManager.checkLink(java.lang.String)
public void loadLibrary(String libname)
libname
参数指定的本地库。的
libname
参数必须不包含任何特定平台的前缀、文件扩展名或路径。如果一个本地库称为
libname
是静态的虚拟机相连,然后jni_onload_
libname
函数库导出的调用。看到JNI规范的更多细节。否则,该参数是由系统加载库名库位置映射到本Map书馆形象的实现依赖性。
首先,如果存在安全管理器,它的checkLink
方法被调用的libname
作为参数。这可能会导致安全异常。
方法System.loadLibrary(String)
是传统的和方便的调用这个方法。如果本地的方法是使用在一个类的实现,一个标准的策略是将本地代码的一个库文件(称之为LibFile
)然后把静态初始化器:
在类声明。当加载和初始化类时,将加载本机方法的必要的本地代码实现,然后将其加载。static { System.loadLibrary("LibFile"); }
如果这个方法被调用不止一次以相同的库名称,则忽略了第二个和随后的调用。
libname
-库的名称。
SecurityException
-如果存在一个安全管理及其
checkLink
方法不允许指定的动态库的加载
UnsatisfiedLinkError
-如果库名参数包含文件路径,当地的图书馆是不是与VM的静态链接库,或不能通过主机系统映射到本地的图书馆形象。
null
libname
NullPointerException
SecurityException
,
SecurityManager.checkLink(java.lang.String)
@Deprecated public InputStream getLocalizedInputStream(InputStream in)
InputStreamReader
和BufferedReader
类。
InputStream
并返回一个
InputStream
等价的说法在所有方面除了它定位:在本地字符集的字符是从流中读取的,他们是自动转换从设置为Unicode的局部特征。
如果参数已经是局部流,则可能会返回结果。
in
- InputStream定位
InputStream
,
BufferedReader.BufferedReader(java.io.Reader)
,
InputStreamReader.InputStreamReader(java.io.InputStream)
@Deprecated public OutputStream getLocalizedOutputStream(OutputStream out)
OutputStreamWriter
,BufferedWriter
,和PrintWriter
类。
OutputStream
并返回一个
OutputStream
等价的说法在所有方面除了它定位:为Unicode字符写入流,它们会自动转换为本地字符集。
如果参数已经是局部流,则可能会返回结果。
out
- OutputStream定位
OutputStream
,
BufferedWriter.BufferedWriter(java.io.Writer)
,
OutputStreamWriter.OutputStreamWriter(java.io.OutputStream)
,
PrintWriter.PrintWriter(java.io.OutputStream)
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.