- java.lang.Object
-
- java.lang.System
-
public final class System extends Object
System
类包含几个有用的类字段和方法。 它无法实例化。System
类提供的设施包括标准输入,标准输出和错误输出流; 访问外部定义的属性和环境变量; 加载文件和库的方法; 以及用于快速复制阵列的一部分的实用方法。- 从以下版本开始:
- 1.0
-
-
嵌套类汇总
嵌套类 变量和类型 类 描述 static interface
System.Logger
System.Logger
实例记录将路由到LoggerFinder
使用的基础日志记录框架的消息 。static class
System.LoggerFinder
LoggerFinder
服务负责为其使用的基础框架创建,管理和配置记录器。
-
字段汇总
字段 变量和类型 字段 描述 static PrintStream
err
“标准”错误输出流。static InputStream
in
“标准”输入流。static PrintStream
out
“标准”输出流。
-
方法摘要
所有方法 静态方法 具体的方法 变量和类型 方法 描述 static void
arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
将指定源数组中的数组从指定位置开始复制到目标数组的指定位置。static String
clearProperty(String key)
删除指定键指示的系统属性。static Console
console()
返回与当前Java虚拟机关联的唯一Console
对象(如果有)。static long
currentTimeMillis()
以毫秒为单位返回当前时间。static void
exit(int status)
终止当前运行的Java虚拟机。static void
gc()
运行垃圾收集器。static Map<String,String>
getenv()
返回当前系统环境的不可修改的字符串映射视图。static String
getenv(String name)
获取指定环境变量的值。static System.Logger
getLogger(String name)
返回Logger
的实例以供调用者使用。static System.Logger
getLogger(String name, ResourceBundle bundle)
返回Logger
的可本地化实例,供调用者使用。static Properties
getProperties()
确定当前系统属性。static String
getProperty(String key)
获取指定键指示的系统属性。static String
getProperty(String key, String def)
获取指定键指示的系统属性。static SecurityManager
getSecurityManager()
获取系统安全性接口。static int
identityHashCode(Object x)
返回与默认方法hashCode()返回的给定对象相同的哈希码,无论给定对象的类是否覆盖hashCode()。static Channel
inheritedChannel()
返回从创建此Java虚拟机的实体继承的通道。static String
lineSeparator()
返回依赖于系统的行分隔符字符串。static void
load(String filename)
加载filename参数指定的本机库。static void
loadLibrary(String libname)
加载libname
参数指定的本机库。static String
mapLibraryName(String libname)
将库名称映射到表示本机库的特定于平台的字符串。static long
nanoTime()
返回正在运行的Java虚拟机的高分辨率时间源的当前值,以纳秒为单位。static void
runFinalization()
运行待完成的任何对象的终结方法。static void
setErr(PrintStream err)
重新分配“标准”错误输出流。static void
setIn(InputStream in)
重新分配“标准”输入流。static void
setOut(PrintStream out)
重新分配“标准”输出流。static void
setProperties(Properties props)
将系统属性设置为Properties
参数。static String
setProperty(String key, String value)
设置指定键指示的系统属性。static void
setSecurityManager(SecurityManager s)
设置系统安全性。
-
-
-
字段详细信息
-
in
public static final InputStream in
“标准”输入流。 此流已打开并准备好提供输入数据。 通常,该流对应于键盘输入或由主机环境或用户指定的另一输入源。
-
out
public static final PrintStream out
“标准”输出流。 此流已打开并准备接受输出数据。 通常,该流对应于主机环境或用户指定的显示输出或另一输出目的地。对于简单的独立Java应用程序,编写一行输出数据的典型方法是:
System.out.println(data)
见
println
类方法PrintStream
。- 另请参见:
-
PrintStream.println()
,PrintStream.println(boolean)
,PrintStream.println(char)
,PrintStream.println(char[])
,PrintStream.println(double)
,PrintStream.println(float)
,PrintStream.println(int)
,PrintStream.println(long)
,PrintStream.println(java.lang.Object)
,PrintStream.println(java.lang.String)
-
err
public static final PrintStream err
“标准”错误输出流。 此流已打开并准备接受输出数据。通常,该流对应于主机环境或用户指定的显示输出或另一输出目的地。 按照惯例,此输出流用于显示应立即引起用户注意的错误消息或其他信息,即使主要输出流(变量
out
的值)已重定向到文件或其他目标,即通常不会持续监控。
-
-
方法详细信息
-
setIn
public static void setIn(InputStream in)
重新分配“标准”输入流。 首先,如果有安全管理器,则调用其checkPermission
方法并获得RuntimePermission("setIO")
权限,以查看是否可以重新分配“标准”输入流。- 参数
-
in
- 新标准输入流。 - 异常
-
SecurityException
- 如果存在安全管理器且其checkPermission
方法不允许重新分配标准输入流。 - 从以下版本开始:
- 1.1
- 另请参见:
-
SecurityManager.checkPermission(java.security.Permission)
,RuntimePermission
-
setOut
public static void setOut(PrintStream out)
重新分配“标准”输出流。 首先,如果有安全管理器,则调用其checkPermission
方法并获得RuntimePermission("setIO")
权限,以查看是否可以重新分配“标准”输出流。- 参数
-
out
- 新标准输出流 - 异常
-
SecurityException
- 如果存在安全管理器且其checkPermission
方法不允许重新分配标准输出流。 - 从以下版本开始:
- 1.1
- 另请参见:
-
SecurityManager.checkPermission(java.security.Permission)
,RuntimePermission
-
setErr
public static void setErr(PrintStream err)
重新分配“标准”错误输出流。 首先,如果有安全管理器,则调用其checkPermission
方法并获得RuntimePermission("setIO")
权限,以查看是否可以重新分配“标准”错误输出流。- 参数
-
err
- 新的标准错误输出流。 - 异常
-
SecurityException
- 如果存在安全管理器且其checkPermission
方法不允许重新分配标准错误输出流。 - 从以下版本开始:
- 1.1
- 另请参见:
-
SecurityManager.checkPermission(java.security.Permission)
,RuntimePermission
-
console
public static Console console()
返回与当前Java虚拟机关联的唯一Console
对象(如果有)。- 结果
-
系统控制台(如果有),否则为
null
。 - 从以下版本开始:
- 1.6
-
inheritedChannel
public static Channel inheritedChannel() throws IOException
返回从创建此Java虚拟机的实体继承的通道。 此方法返回通过调用系统范围的默认SelectorProvider
对象的inheritedChannel
方法获得的通道。除了
inheritedChannel
中描述的面向网络的信道之外 ,该方法将来可以返回其他类型的信道。- 结果
-
继承的渠道,如果有的话,否则
null
。 - 异常
-
IOException
- 如果发生I / O错误 -
SecurityException
- 如果存在安全管理器且不允许访问该通道。 - 从以下版本开始:
- 1.5
-
setSecurityManager
public static void setSecurityManager(SecurityManager s)
设置系统安全性。 如果已安装安全管理器,则此方法首先使用RuntimePermission("setSecurityManager")
权限调用安全管理器的checkPermission
方法,以确保可以替换现有安全管理器。 这可能会导致投掷SecurityException
。否则,该参数将建立为当前安全管理器。 如果参数为
null
建立安全管理器,则不执行任何操作,并且该方法仅返回。- 参数
-
s
- 安全经理。 - 异常
-
SecurityException
- 如果已设置安全管理器且其checkPermission
方法不允许替换它。 - 另请参见:
-
getSecurityManager()
,SecurityManager.checkPermission(java.security.Permission)
,RuntimePermission
-
getSecurityManager
public static SecurityManager getSecurityManager()
获取系统安全性接口。- 结果
-
如果已经为当前应用程序建立了安全管理器,则返回该安全管理器;
否则,返回
null
。 - 另请参见:
-
setSecurityManager(java.lang.SecurityManager)
-
currentTimeMillis
public static long currentTimeMillis()
以毫秒为单位返回当前时间。 请注意,虽然返回值的时间单位是毫秒,但值的粒度取决于底层操作系统,并且可能更大。 例如,许多操作系统以几十毫秒为单位测量时间。有关“计算机时间”和协调世界时(UTC)之间可能出现的轻微差异的讨论,请参阅类
Date
的说明。- 结果
- 当前时间与UTC时间1970年1月1日午夜之间的差异,以毫秒为单位。
- 另请参见:
-
Date
-
nanoTime
public static long nanoTime()
返回正在运行的Java虚拟机的高分辨率时间源的当前值,以纳秒为单位。 此方法只能用于测量经过的时间,与系统或挂钟时间的任何其他概念无关。 返回的值表示纳秒,因为某些固定但任意的原始时间(可能在将来,因此值可能为负)。 在Java虚拟机的实例中,此方法的所有调用都使用相同的原点; 其他虚拟机实例可能使用不同的来源。此方法提供纳秒级精度,但不一定是纳秒级分辨率(即,值的变化频率) - 除了分辨率至少与
currentTimeMillis()
的分辨率一样好之外,不做任何保证。由于数值溢出,跨越大于约292年(2 63纳秒)的连续调用的差异将无法正确计算经过的时间。
仅当计算在Java虚拟机的同一实例中获得的两个此类值之间的差异时,此方法返回的值才有意义。
例如,要测量某些代码执行所需的时间:
long startTime = System.nanoTime(); // ... the code being measured ... long elapsedNanos = System.nanoTime() - startTime;
要将经过时间与超时进行比较,请使用
if (System.nanoTime() - startTime >= timeoutNanos) ...
if (System.nanoTime() >= startTime + timeoutNanos) ...
- 结果
- 运行Java虚拟机的高分辨率时间源的当前值,以纳秒为单位
- 从以下版本开始:
- 1.5
-
arraycopy
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
将指定源数组中的数组从指定位置开始复制到目标数组的指定位置。 阵列组件的一个子序列被从通过引用的源阵列复制src
被引用的目标阵列dest
。 复制的组件数等于length
参数。 在位置的部件srcPos
通过srcPos+length-1
源阵列中的被复制到的位置destPos
通过destPos+length-1
分别,目的地阵列。如果
src
和dest
参数引用相同的数组对象,则执行复制,就好像位置srcPos
到srcPos+length-1
的组件首次复制到具有length
组件的临时数组,然后临时数组的内容被复制到位置destPos
通过目标数组的destPos+length-1
。如果
dest
是null
,则抛出NullPointerException
。如果
src
是null
,则抛出NullPointerException
并且不修改目标阵列。否则,如果满足以下任何条件,则抛出
ArrayStoreException
并且不修改目标:-
src
参数引用的对象不是数组。 -
dest
参数引用的对象不是数组。 -
src
参数和dest
参数引用其组件类型为不同基元类型的数组。 -
src
参数引用具有基本组件类型的数组,而dest
参数引用具有引用组件类型的数组。 -
src
参数引用具有引用组件类型的数组,而dest
参数引用具有基本组件类型的数组。
否则,如果满足以下任何条件,则抛出
IndexOutOfBoundsException
并且不修改目标:-
srcPos
论点是否定的。 -
destPos
参数为负数。 -
length
参数为负数。 -
srcPos+length
大于src.length
,源数组的长度。 -
destPos+length
大于dest.length
,目标数组的长度。
否则,如果通过赋值转换无法将位置
srcPos
到srcPos+length-1
的源阵列的任何实际组件转换为目标阵列的组件类型,则抛出ArrayStoreException
。 在这种情况下,令k为小于length的最小非负整数,使得src[srcPos+
k]
无法转换为目标数组的组件类型; 当抛出异常时,位置srcPos
到srcPos+
k-1
源阵列组件已经被复制到目标阵列位置destPos
到destPos+
k-1
并且目标阵列的其他位置都不会被修改。 (由于已经逐项列出的限制,本段有效仅适用于两个数组都具有引用类型的组件类型的情况。)- 参数
-
src
- 源数组。 -
srcPos
- 源数组中的起始位置。 -
dest
- 目标数组。 -
destPos
- 目标数据中的起始位置。 -
length
- 要复制的数组元素的数量。 - 异常
-
IndexOutOfBoundsException
- 如果复制会导致访问数组边界外的数据。 -
ArrayStoreException
- 如果由于类型不匹配,src
阵列中的元素无法存储到dest
阵列中。 -
NullPointerException
- 如果src
或dest
是null
。
-
-
identityHashCode
public static int identityHashCode(Object x)
返回与默认方法hashCode()返回的给定对象相同的哈希码,无论给定对象的类是否覆盖hashCode()。 空引用的哈希码为零。- 参数
-
x
- 要为其计算hashCode的对象 - 结果
- hashCode
- 从以下版本开始:
- 1.1
- 另请参见:
-
Object.hashCode()
,Objects.hashCode(Object)
-
getProperties
public static Properties getProperties()
确定当前系统属性。 首先,如果有安全管理器,则调用其checkPropertiesAccess
方法时不带参数。 这可能会导致安全性异常。getProperty(String)
方法使用的当前系统属性集将作为Properties
对象返回。 如果没有当前的系统属性集,则首先创建并初始化一组系统属性。 这组系统属性始终包含以下键的值:java.version
Java Runtime Environment version, which may be interpreted as aRuntime.Version
java.version.date
Java Runtime Environment version date, in ISO-8601 YYYY-MM-DD format, which may be interpreted as aLocalDate
java.vendor
Java Runtime Environment vendorjava.vendor.url
Java vendor URLjava.vendor.version
Java vendor versionjava.home
Java installation directoryjava.vm.specification.version
Java Virtual Machine specification version, whose value is the feature element of the runtime versionjava.vm.specification.vendor
Java Virtual Machine specification vendorjava.vm.specification.name
Java Virtual Machine specification namejava.vm.version
Java Virtual Machine implementation version which may be interpreted as aRuntime.Version
java.vm.vendor
Java Virtual Machine implementation vendorjava.vm.name
Java Virtual Machine implementation namejava.specification.version
Java Runtime Environment specification version, whose value is the feature element of the runtime versionjava.specification.vendor
Java Runtime Environment specification vendorjava.specification.name
Java Runtime Environment specification namejava.class.version
Java class format version numberjava.class.path
Java class path (refer toClassLoader.getSystemClassLoader()
for details)java.library.path
List of paths to search when loading librariesjava.io.tmpdir
Default temp file pathjava.compiler
Name of JIT compiler to useos.name
Operating system nameos.arch
Operating system architectureos.version
Operating system versionfile.separator
File separator ("/" on UNIX)path.separator
Path separator (":" on UNIX)line.separator
Line separator ("\n" on UNIX)user.name
User's account nameuser.home
User's home directoryuser.dir
User's current working directory系统属性值中的多个路径由平台的路径分隔符分隔。
请注意,即使安全管理器不允许
getProperties
操作,它也可以选择允许getProperty(String)
操作。- API Note:
-
除非另有说明,否则更改标准系统属性可能会产生不可预测的结果。
可以在初始化期间或首次使用时缓存属性值。
使用初始化后设定一个标准属性
getProperties()
,setProperties(Properties)
,setProperty(String, String)
,或clearProperty(String)
可能不具有期望的效果。 - Implementation Note:
-
除标准系统属性外,系统属性还可能包括以下键:
Shows property keys and associated values Key Description of Associated Value
jdk.module.path
The application module pathjdk.module.upgrade.path
The upgrade module pathjdk.module.main
The module name of the initial/main modulejdk.module.main.class
The main class name of the initial module - 结果
- 系统属性
- 异常
-
SecurityException
- 如果存在安全管理器且其checkPropertiesAccess
方法不允许访问系统属性。 - 另请参见:
-
setProperties(java.util.Properties)
,SecurityException
,SecurityManager.checkPropertiesAccess()
,Properties
-
lineSeparator
public static String lineSeparator()
返回依赖于系统的行分隔符字符串。 它始终返回相同的值 - system propertyline.separator
的初始值。在UNIX系统上,它返回
"\n"
; 在Microsoft Windows系统上,它返回"\r\n"
。- 结果
- 系统相关的行分隔符字符串
- 从以下版本开始:
- 1.7
-
setProperties
public static void setProperties(Properties props)
将系统属性设置为Properties
参数。 首先,如果有安全管理器,则调用其checkPropertiesAccess
方法时不带参数。 这可能会导致安全性异常。该参数成为
getProperty(String)
方法使用的当前系统属性集。 如果参数为null
,则忘记当前的系统属性集。- API Note:
- 除非另有说明,否则更改标准系统属性可能会产生不可预测的结果 。 有关详细信息,请参见getProperties 。
- 参数
-
props
- 新的系统属性。 - 异常
-
SecurityException
- 如果存在安全管理器且其checkPropertiesAccess
方法不允许访问系统属性。 - 另请参见:
-
getProperties()
,Properties
,SecurityException
,SecurityManager.checkPropertiesAccess()
-
getProperty
public static String getProperty(String key)
获取指定键指示的系统属性。 首先,如果有安全管理器,checkPropertyAccess
密钥作为参数调用其checkPropertyAccess
方法。 这可能会导致SecurityException。如果没有当前系统属性集,则首先以与
getProperties
方法相同的方式创建和初始化一组系统属性。- API Note:
- 除非另有说明,否则更改标准系统属性可能会产生不可预测的结果 。 有关详细信息,请参见getProperties 。
- 参数
-
key
- 系统属性的名称。 - 结果
-
系统属性的字符串值,如果没有具有该键的属性,
null
。 - 异常
-
SecurityException
- 如果存在安全管理器且其checkPropertyAccess
方法不允许访问指定的系统属性。 -
NullPointerException
- 如果key
是null
。 -
IllegalArgumentException
- 如果key
为空。 - 另请参见:
-
setProperty(java.lang.String, java.lang.String)
,SecurityException
,SecurityManager.checkPropertyAccess(java.lang.String)
,getProperties()
-
getProperty
public static String getProperty(String key, String def)
获取指定键指示的系统属性。 首先,如果有安全管理器,checkPropertyAccess
key
作为参数调用其checkPropertyAccess
方法。如果没有当前的系统属性集,则首先以与
getProperties
方法相同的方式创建和初始化一组系统属性。- 参数
-
key
- 系统属性的名称。 -
def
- 默认值。 - 结果
- 系统属性的字符串值,如果没有具有该键的属性,则为默认值。
- 异常
-
SecurityException
- 如果存在安全管理器且其checkPropertyAccess
方法不允许访问指定的系统属性。 -
NullPointerException
- 如果key
是null
。 -
IllegalArgumentException
- 如果key
为空。 - 另请参见:
-
setProperty(java.lang.String, java.lang.String)
,SecurityManager.checkPropertyAccess(java.lang.String)
,getProperties()
-
setProperty
public static String setProperty(String key, String value)
设置指定键指示的系统属性。 首先,如果存在安全管理器,则使用PropertyPermission(key, "write")
权限调用其SecurityManager.checkPermission
方法。 这可能会导致抛出SecurityException。 如果未引发任何异常,则将指定的属性设置为给定值。- API Note:
- 除非另有说明,否则更改标准系统属性可能会产生不可预测的结果 。 有关详细信息,请参见getProperties 。
- 参数
-
key
- 系统属性的名称。 -
value
- 系统属性的值。 - 结果
-
系统属性的先前值,如果没有,
null
。 - 异常
-
SecurityException
- 如果存在安全管理器且其checkPermission
方法不允许设置指定的属性。 -
NullPointerException
- 如果key
或value
是null
。 -
IllegalArgumentException
- 如果key
为空。 - 从以下版本开始:
- 1.2
- 另请参见:
-
getProperty(java.lang.String)
,getProperty(java.lang.String)
,getProperty(java.lang.String, java.lang.String)
,PropertyPermission
,SecurityManager.checkPermission(java.security.Permission)
-
clearProperty
public static String clearProperty(String key)
删除指定键指示的系统属性。 首先,如果存在安全管理器,则使用PropertyPermission(key, "write")
权限调用其SecurityManager.checkPermission
方法。 这可能会导致抛出SecurityException。 如果未引发任何异常,则删除指定的属性。- API Note:
- 除非另有说明,否则更改标准系统属性可能会产生不可预测的结果 。 有关详细信息,请参见getProperties方法。
- 参数
-
key
- 要删除的系统属性的名称。 - 结果
-
系统属性的上一个字符串值,如果没有具有该键的属性,
null
。 - 异常
-
SecurityException
- 如果存在安全管理器且其checkPropertyAccess
方法不允许访问指定的系统属性。 -
NullPointerException
- 如果key
是null
。 -
IllegalArgumentException
- 如果key
为空。 - 从以下版本开始:
- 1.5
- 另请参见:
-
getProperty(java.lang.String)
,setProperty(java.lang.String, java.lang.String)
,Properties
,SecurityException
,SecurityManager.checkPropertiesAccess()
-
getenv
public static String getenv(String name)
获取指定环境变量的值。 环境变量是依赖于系统的外部命名值。如果存在安全管理器,则使用
{@link RuntimePermission}("getenv."+name)
权限调用其checkPermission
方法。 这可能导致抛出SecurityException
。 如果没有抛出异常,则返回变量name
的值。System properties and environment variables都是名称和值之间的概念映射。 这两种机制都可用于将用户定义的信息传递给Java进程。 环境变量具有更全局的效果,因为它们对定义它们的进程的所有后代都是可见的,而不仅仅是直接的Java子进程。 它们可以在不同的操作系统上具有微妙的不同语义,例如不区分大小写。 由于这些原因,环境变量更可能产生意想不到的副作用。 最好尽可能使用系统属性。 当需要全局效果时,或者当外部系统接口需要环境变量(例如
PATH
)时,应使用环境变量。在UNIX系统上,
name
的字母大小写通常很重要,而在Microsoft Windows系统上通常不是。 例如,表达式System.getenv("FOO").equals(System.getenv("foo"))
可能在Microsoft Windows上为true。- 参数
-
name
- 环境变量的名称 - 结果
-
变量的字符串值,如果未在系统环境中定义变量,
null
- 异常
-
NullPointerException
- 如果name
是null
-
SecurityException
- 如果存在安全管理器且其checkPermission
方法不允许访问环境变量name
- 另请参见:
-
getenv()
,ProcessBuilder.environment()
-
getenv
public static Map<String,String> getenv()
返回当前系统环境的不可修改的字符串映射视图。 环境是从名称到值的系统相关映射,从父进程传递到子进程。如果系统不支持环境变量,则返回空映射。
返回的映射永远不会包含null键或值。 尝试查询是否存在空键或值将引发
NullPointerException
。 试图查询不是类型String
的键或值的存在将抛出ClassCastException
。返回的地图及其集合视图可能不遵守
Object.equals(java.lang.Object)
和Object.hashCode()
方法的一般合同。返回的映射通常在所有平台上都区分大小写。
如果存在安全管理器,则使用
{@link RuntimePermission}("getenv.*")
权限调用其checkPermission
方法。 这可能会导致SecurityException
被抛出。将信息传递给Java子进程时 , system properties通常优先于环境变量。
- 结果
- 环境作为变量名称到值的映射
- 异常
-
SecurityException
- 如果存在安全管理器且其checkPermission
方法不允许访问进程环境 - 从以下版本开始:
- 1.5
- 另请参见:
-
getenv(String)
,ProcessBuilder.environment()
-
getLogger
public static System.Logger getLogger(String name)
返回Logger
的实例以供调用者使用。- API Note:
-
例如,此方法可以推迟调用
LoggerFinder.getLogger
方法来创建由日志记录后端提供的实际记录器,以允许在系统初始化期间获取记录器。 - 实现要求:
-
此方法返回的实例将消息路由到通过调用
LoggerFinder.getLogger(name, module)
获得的记录器,其中模块
是调用者的模块。 如果从堆栈中没有调用者帧的上下文调用System.getLogger
(例如,直接从JNI附加线程调用时),则抛出IllegalCallerException
。 要在此类上下文中获取记录器,请使用将隐式标识为调用者的辅助类,或使用系统LoggerFinder
来获取记录器。 请注意,执行后者可能会急切地初始化基础日志记录系统。 - 参数
-
name
- 记录器的名称。 - 结果
-
调用类可以使用的
System.Logger
的实例。 - 异常
-
NullPointerException
- 如果name
是null
。 -
IllegalCallerException
- 如果堆栈上没有Java调用者帧。 - 从以下版本开始:
- 9
-
getLogger
public static System.Logger getLogger(String name, ResourceBundle bundle)
返回Logger
的可本地化实例,供调用者使用。 返回的记录器将使用提供的资源包进行消息本地化。- API Note:
-
该方法旨在在系统完全初始化后使用。
此方法可能会触发
System.LoggerFinder
服务的立即加载和初始化,如果Java Runtime尚未准备好初始化具体服务实现,则可能会导致问题。 可以在引导序列的早期加载并需要记录本地化消息的系统类应使用getLogger(java.lang.String)
创建记录器,然后使用将资源束作为参数的日志方法。 - 实现要求:
-
返回的记录器将执行
LoggerFinder.getLocalizedLogger(name, bundle, module)
指定的消息本地化,其中模块
是调用者的模块。 如果从堆栈中没有调用者帧的上下文调用System.getLogger
(例如,直接从JNI附加线程调用时),则抛出IllegalCallerException
。 要在此类上下文中获取记录器,请使用将隐式标识为调用者的辅助类,或使用系统LoggerFinder
来获取记录器。 请注意,执行后者可能会急切地初始化基础日志记录系统。 - 参数
-
name
- 记录器的名称。 -
bundle
- 资源包。 - 结果
-
System.Logger
的一个实例,它将使用提供的资源包进行消息本地化。 - 异常
-
NullPointerException
- 如果name
是null
或bundle
是null
。 -
IllegalCallerException
- 如果堆栈上没有Java调用者帧。 - 从以下版本开始:
- 9
-
exit
public static void exit(int status)
终止当前运行的Java虚拟机。 该参数用作状态代码; 按照惯例,非零状态代码表示异常终止。此方法调用类
Runtime
的exit
方法。 此方法永远不会正常返回。呼叫
System.exit(n)
实际上等同于呼叫:Runtime.getRuntime().exit(n)
- 参数
-
status
- 退出状态。 - 异常
-
SecurityException
- 如果存在安全管理器且其checkExit
方法不允许以指定状态退出。 - 另请参见:
-
Runtime.exit(int)
-
gc
public static void gc()
运行垃圾收集器。 调用gc
方法表明Java虚拟机花费了大量精力来回收未使用的对象,以使其当前占用的内存可用于快速重用。 当控制从方法调用返回时,Java虚拟机已尽最大努力从所有丢弃的对象中回收空间。呼叫
System.gc()
实际上等同于呼叫:Runtime.getRuntime().gc()
- 另请参见:
-
Runtime.gc()
-
runFinalization
public static void runFinalization()
运行待完成的任何对象的终结方法。 调用此方法表明Java虚拟机花费了finalize
来运行已被发现被丢弃但尚未运行其finalize
方法的对象的finalize
方法。 当控制从方法调用返回时,Java虚拟机已尽最大努力完成所有未完成的终结。呼叫
System.runFinalization()
实际上等同于呼叫:Runtime.getRuntime().runFinalization()
-
load
public static void load(String filename)
加载filename参数指定的本机库。 filename参数必须是绝对路径名。 如果filename参数在剥离任何特定于平台的库前缀,路径和文件扩展名时,表示名称为L的库,并且名为L的本机库与VM静态链接,则表示JNI_OnLoad_L函数调用库导出而不是尝试加载动态库。 与参数匹配的文件名不必存在于文件系统中。 有关详细信息,请参阅JNI Specification 。 否则,filename参数将以依赖于实现的方式映射到本机库映像。呼叫
System.load(name)
实际上等同于呼叫:Runtime.getRuntime().load(name)
- 参数
-
filename
- 要加载的文件。 - 异常
-
SecurityException
- 如果存在安全管理器且其checkLink
方法不允许加载指定的动态库 -
UnsatisfiedLinkError
- 如果文件名不是绝对路径名,则本机库不与VM静态链接,或者主机系统无法将库映射到本机库映像。 -
NullPointerException
- 如果filename
是null
- 另请参见:
-
Runtime.load(java.lang.String)
,SecurityManager.checkLink(java.lang.String)
-
loadLibrary
public static void loadLibrary(String libname)
加载libname
参数指定的本机库。libname
参数不得包含任何特定于平台的前缀,文件扩展名或路径。 如果名为libname
的本机库与VM静态链接,则调用库导出的JNI_OnLoad_libname
函数。 有关详细信息,请参阅JNI Specification 。 否则,libname参数从系统库位置加载,并以依赖于实现的方式映射到本机库映像。呼叫
System.loadLibrary(name)
实际上等同于呼叫Runtime.getRuntime().loadLibrary(name)
- 参数
-
libname
- 库的名称。 - 异常
-
SecurityException
- 如果存在安全管理器且其checkLink
方法不允许加载指定的动态库 -
UnsatisfiedLinkError
- 如果libname参数包含文件路径,则本机库不与VM静态链接,或者主机系统无法将库映射到本机库映像。 -
NullPointerException
- 如果libname
是null
- 另请参见:
-
Runtime.loadLibrary(java.lang.String)
,SecurityManager.checkLink(java.lang.String)
-
mapLibraryName
public static String mapLibraryName(String libname)
将库名称映射到表示本机库的特定于平台的字符串。- 参数
-
libname
- 库的名称。 - 结果
- 与平台相关的本机库名称。
- 异常
-
NullPointerException
- 如果libname
是null
- 从以下版本开始:
- 1.2
- 另请参见:
-
loadLibrary(java.lang.String)
,ClassLoader.findLibrary(java.lang.String)
-
-