W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
java.lang.Object
|---java.lang.Runtime
public class Runtime
extends Object
每個 Java 應(yīng)用程序都有一個 Runtime 類的實(shí)例,它允許應(yīng)用程序與運(yùn)行應(yīng)用程序的環(huán)境進(jìn)行交互。 當(dāng)前運(yùn)行時可以從 getRuntime 方法中獲取。
應(yīng)用程序無法創(chuàng)建自己的此類實(shí)例。
修飾符和類型 | 方法 | 描述 |
---|---|---|
void | addShutdownHook(Thread hook) | 注冊一個新的虛擬機(jī)關(guān)閉掛鉤。 |
int | availableProcessors() | 返回 Java 虛擬機(jī)可用的處理器數(shù)量。 |
Process | exec(String command) | 在單獨(dú)的進(jìn)程中執(zhí)行指定的字符串命令。 |
Process | exec(String[] cmdarray) | 在單獨(dú)的進(jìn)程中執(zhí)行指定的命令和參數(shù)。 |
Process | exec(String[] cmdarray, String[] envp) | 在具有指定環(huán)境的單獨(dú)進(jìn)程中執(zhí)行指定的命令和參數(shù)。 |
Process | exec(String[] cmdarray, String[] envp, File dir) | 在具有指定環(huán)境和工作目錄的單獨(dú)進(jìn)程中執(zhí)行指定的命令和參數(shù)。 |
Process | exec(String command, String[] envp) | 在具有指定環(huán)境的單獨(dú)進(jìn)程中執(zhí)行指定的字符串命令。 |
Process | exec(String command, String[] envp, File dir) | 在具有指定環(huán)境和工作目錄的單獨(dú)進(jìn)程中執(zhí)行指定的字符串命令。 |
void | exit(int status) | 通過啟動其關(guān)閉序列來終止當(dāng)前正在運(yùn)行的 Java 虛擬機(jī)。 |
long | freeMemory() | 返回 Java 虛擬機(jī)中的可用內(nèi)存量。 |
void | gc() | 運(yùn)行垃圾收集器。 |
InputStream | getLocalizedInputStream(InputStream in) | 已棄用。 從 JDK 1.1 開始,將本地編碼中的字節(jié)流轉(zhuǎn)換為 Unicode 中的字符流的首選方法是通過 InputStreamReader 和 BufferedReader 類。 |
OutputStream | getLocalizedOutputStream(OutputStream out) | 已棄用。 從 JDK 1.1 開始,將 Unicode 字符流轉(zhuǎn)換為本地編碼的字節(jié)流的首選方法是通過 OutputStreamWriter、BufferedWriter 和 PrintWriter 類。 |
static Runtime | getRuntime() | 返回與當(dāng)前 Java 應(yīng)用程序關(guān)聯(lián)的運(yùn)行時對象。 |
void | halt(int status) | 強(qiáng)制終止當(dāng)前運(yùn)行的 Java 虛擬機(jī)。 |
void | load(String filename) | 加載由文件名參數(shù)指定的本機(jī)庫。 |
void | loadLibrary(String libname) | 加載由 libname 參數(shù)指定的本機(jī)庫。 |
long | maxMemory() | 返回 Java 虛擬機(jī)將嘗試使用的最大內(nèi)存量。 |
boolean | removeShutdownHook(Thread hook) | 取消注冊以前注冊的虛擬機(jī)關(guān)閉掛鉤。 |
void | runFinalization() | 運(yùn)行任何等待終結(jié)的對象的終結(jié)方法。 |
static void | runFinalizersOnExit(boolean value) | 已棄用。 這種方法本質(zhì)上是不安全的。 這可能會導(dǎo)致在其他線程同時操作這些對象時對活動對象調(diào)用終結(jié)器,從而導(dǎo)致行為不穩(wěn)定或死鎖。 |
long | totalMemory() | 返回 Java 虛擬機(jī)中的內(nèi)存總量。 |
void | traceInstructions(boolean on) | 啟用/禁用指令跟蹤。 |
void | traceMethodCalls(boolean on) | 啟用/禁用方法調(diào)用的跟蹤。 |
從類 java.lang.Object 繼承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
public static Runtime getRuntime()
返回與當(dāng)前 Java 應(yīng)用程序關(guān)聯(lián)的運(yùn)行時對象。 Runtime 類的大部分方法都是實(shí)例方法,必須針對當(dāng)前運(yùn)行時對象調(diào)用。
返回:
與當(dāng)前 Java 應(yīng)用程序關(guān)聯(lián)的運(yùn)行時對象。
public void exit(int status)
通過啟動其關(guān)閉序列來終止當(dāng)前正在運(yùn)行的 Java 虛擬機(jī)。此方法永遠(yuǎn)不會正常返回。該參數(shù)用作狀態(tài)碼;按照慣例,非零狀態(tài)碼表示異常終止。
虛擬機(jī)的關(guān)閉順序包括兩個階段。在第一階段,所有已注冊的關(guān)閉掛鉤(如果有)都以某種未指定的順序啟動,并允許同時運(yùn)行直到它們完成。在第二階段,如果 finalization-on-exit 已啟用,則所有未調(diào)用的終結(jié)器都會運(yùn)行。完成此操作后,虛擬機(jī)將停止。
如果在虛擬機(jī)開始其關(guān)閉序列之后調(diào)用此方法,則如果正在運(yùn)行關(guān)閉掛鉤,則此方法將無限期阻塞。如果已經(jīng)運(yùn)行了關(guān)閉掛鉤并且已啟用退出終止,則此方法會在狀態(tài)非零時使用給定的狀態(tài)代碼暫停虛擬機(jī);否則,它會無限期地阻塞。
System#exit(int) 方法是調(diào)用此方法的常規(guī)且方便的方法。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
status | 終止?fàn)顟B(tài)。 按照慣例,非零狀態(tài)碼表示異常終止。 |
Throws:
Throw名稱 | Throw描述 |
---|---|
SecurityException | 如果存在安全管理器并且其 SecurityManager#checkExit 方法不允許以指定狀態(tài)退出 |
public void addShutdownHook(Thread hook)
注冊一個新的虛擬機(jī)關(guān)閉掛鉤。
Java 虛擬機(jī)關(guān)閉以響應(yīng)兩種事件:
關(guān)閉掛鉤只是一個已初始化但未啟動的線程。當(dāng)虛擬機(jī)開始其關(guān)閉序列時,它將以某種未指定的順序啟動所有已注冊的關(guān)閉掛鉤并讓它們同時運(yùn)行。當(dāng)所有鉤子都完成后,如果 finalization-on-exit 已啟用,它將運(yùn)行所有未調(diào)用的終結(jié)器。最后,虛擬機(jī)將停止。請注意,在關(guān)閉序列期間,守護(hù)線程將繼續(xù)運(yùn)行,如果通過調(diào)用 exit 方法啟動關(guān)閉,非守護(hù)線程也將繼續(xù)運(yùn)行。
一旦關(guān)閉序列開始,它只能通過調(diào)用halt方法來停止,該方法會強(qiáng)制終止虛擬機(jī)。
一旦關(guān)閉序列開始,就不可能注冊新的關(guān)閉掛鉤或取消注冊先前注冊的掛鉤。嘗試這些操作中的任何一個都將導(dǎo)致拋出 IllegalStateException。
關(guān)閉掛鉤在虛擬機(jī)生命周期的一個微妙時刻運(yùn)行,因此應(yīng)該進(jìn)行防御性編碼。特別是,它們應(yīng)該寫成線程安全的,并盡可能避免死鎖。他們也不應(yīng)該盲目依賴可能已經(jīng)注冊了自己的關(guān)閉鉤子的服務(wù),因此他們自己可能正在關(guān)閉的過程中。例如,嘗試使用其他基于線程的服務(wù)(例如 AWT 事件調(diào)度線程)可能會導(dǎo)致死鎖。
關(guān)閉掛鉤也應(yīng)該快速完成它們的工作。當(dāng)程序調(diào)用 exit 時,期望虛擬機(jī)將立即關(guān)閉并退出。當(dāng)虛擬機(jī)由于用戶注銷或系統(tǒng)關(guān)閉而終止時,底層操作系統(tǒng)可能只允許關(guān)閉和退出的固定時間量。因此,不建議嘗試任何用戶交互或在關(guān)閉掛鉤中執(zhí)行長時間運(yùn)行的計(jì)算。
與在任何其他線程中一樣,通過調(diào)用線程的 ThreadGroup 對象的 ThreadGroup#uncaughtException 方法,在關(guān)閉掛鉤中處理未捕獲的異常。此方法的默認(rèn)實(shí)現(xiàn)將異常的堆棧跟蹤打印到 System#err 并終止線程;它不會導(dǎo)致虛擬機(jī)退出或停止。
在極少數(shù)情況下,虛擬機(jī)可能會中止,即在沒有完全關(guān)閉的情況下停止運(yùn)行。當(dāng)虛擬機(jī)在外部終止時會發(fā)生這種情況,例如在 Unix 上使用 SIGKILL 信號或在 Microsoft Windows 上使用 TerminateProcess 調(diào)用。如果本地方法出錯,例如破壞內(nèi)部數(shù)據(jù)結(jié)構(gòu)或嘗試訪問不存在的內(nèi)存,虛擬機(jī)也可能中止。如果虛擬機(jī)中止,則無法保證是否會運(yùn)行任何關(guān)閉掛鉤。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
hook | 一個已初始化但未啟動的 Thread 對象 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IllegalArgumentException | 如果指定的鉤子已經(jīng)注冊,或者是否可以確定鉤子已經(jīng)運(yùn)行或者已經(jīng)運(yùn)行 |
IllegalStateException | 如果虛擬機(jī)已經(jīng)處于關(guān)閉過程中 |
SecurityException | 如果存在安全管理器并且它拒絕 RuntimePermission("shutdownHooks") |
public boolean removeShutdownHook(Thread hook)
取消注冊以前注冊的虛擬機(jī)關(guān)閉掛鉤。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
hook | 要移除的鉤子 |
返回:
如果指定的鉤子先前已注冊并成功取消注冊,則為 true,否則為 false。
Throws:
Throw名稱 | Throw描述 |
---|---|
IllegalStateException | 如果虛擬機(jī)已經(jīng)處于關(guān)閉過程中 |
SecurityException | 如果存在安全管理器并且它拒絕 RuntimePermission("shutdownHooks") |
public void halt(int status)
強(qiáng)制終止當(dāng)前運(yùn)行的 Java 虛擬機(jī)。 此方法永遠(yuǎn)不會正常返回。
使用此方法時應(yīng)格外小心。 與 exit 方法不同,如果 finalization-on-exit 已啟用,此方法不會導(dǎo)致關(guān)閉掛鉤啟動并且不會運(yùn)行未調(diào)用的終結(jié)器。 如果已啟動關(guān)閉序列,則此方法不會等待任何正在運(yùn)行的關(guān)閉掛鉤或終結(jié)器完成其工作。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
status | 終止?fàn)顟B(tài)。 按照慣例,非零狀態(tài)碼表示異常終止。 如果 Runtime#exit(等效于 System#exit(int))方法已被調(diào)用,則此狀態(tài)代碼將覆蓋傳遞給該方法的狀態(tài)代碼。 |
Throws:
Throw名稱 | Throw描述 |
---|---|
SecurityException | 如果存在安全管理器并且其 SecurityManager#checkExit 方法不允許以指定狀態(tài)退出 |
@Deprecated public static void runFinalizersOnExit(boolean value)
已棄用。 這種方法本質(zhì)上是不安全的。 這可能會導(dǎo)致在其他線程同時操作這些對象時對活動對象調(diào)用終結(jié)器,從而導(dǎo)致行為不穩(wěn)定或死鎖。
在退出時啟用或禁用終結(jié); 這樣做指定在 Java 運(yùn)行時退出之前運(yùn)行具有尚未自動調(diào)用的終結(jié)器的所有對象的終結(jié)器。 默認(rèn)情況下,退出時的最終確定是禁用的。
如果存在安全管理器,則首先調(diào)用其 checkExit 方法,并以 0 作為其參數(shù),以確保允許退出。 這可能會導(dǎo)致 SecurityException。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
value | true 在退出時啟用最終確定,false 禁用 |
Throws:
Throw名稱 | Throw描述 |
---|---|
SecurityException | 如果存在安全管理器并且其 checkExit 方法不允許退出。 |
public Process exec(String command) throws IOException
在單獨(dú)的進(jìn)程中執(zhí)行指定的字符串命令。
這是一種方便的方法。 調(diào)用 exec(command) 形式的行為與調(diào)用 exec(command, null, null) 完全相同。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
command | 指定的系統(tǒng)命令。 |
返回:
用于管理子流程的新流程對象
Throws:
Throw名稱 | Throw描述 |
---|---|
SecurityException | 如果存在安全管理器并且其 SecurityManager#checkExec 方法不允許創(chuàng)建子進(jìn)程 |
IOException | 如果發(fā)生 I/O 錯誤 |
NullPointerException | 如果命令為 null |
IllegalArgumentException | 如果命令為empty |
public Process exec(String command, String[] envp) throws IOException
在具有指定環(huán)境的單獨(dú)進(jìn)程中執(zhí)行指定的字符串命令。
這是一種方便的方法。 exec(command, envp) 形式的調(diào)用與調(diào)用 exec(command, envp, null) 的行為方式完全相同。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
command | 指定的系統(tǒng)命令。 |
envp | 字符串?dāng)?shù)組,其中每個元素都具有格式 name=value 的環(huán)境變量設(shè)置,如果子進(jìn)程應(yīng)繼承當(dāng)前進(jìn)程的環(huán)境,則為 null。 |
返回:
用于管理子流程的新流程對象
Throws:
Throw名稱 | Throw描述 |
---|---|
SecurityException | 如果存在安全管理器并且其 SecurityManager#checkExec 方法不允許創(chuàng)建子進(jìn)程 |
IOException | 如果發(fā)生 I/O 錯誤 |
NullPointerException | 如果 command 為 null,或者 envp 的元素之一為 null |
IllegalArgumentException | 如果命令為empty |
public Process exec(String command, String[] envp, File dir) throws IOException
在具有指定環(huán)境和工作目錄的單獨(dú)進(jìn)程中執(zhí)行指定的字符串命令。
這是一種方便的方法。 exec(command, envp, dir) 形式的調(diào)用與調(diào)用 exec(cmdarray, envp, dir) 的行為方式完全相同,其中 cmdarray 是命令中所有標(biāo)記的數(shù)組。
更準(zhǔn)確地說,使用由調(diào)用 new StringTokenizer(command) 創(chuàng)建的 StringTokenizer 將命令字符串分解為標(biāo)記,而無需進(jìn)一步修改字符類別。 標(biāo)記器生成的標(biāo)記然后以相同的順序放置在新的字符串?dāng)?shù)組 cmdarray 中。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
command | 指定的系統(tǒng)命令。 |
envp | 字符串?dāng)?shù)組,其中每個元素都具有格式 name=value 的環(huán)境變量設(shè)置,如果子進(jìn)程應(yīng)繼承當(dāng)前進(jìn)程的環(huán)境,則為 null。 |
dir | 子進(jìn)程的工作目錄,如果子進(jìn)程應(yīng)該繼承當(dāng)前進(jìn)程的工作目錄,則返回 null。 |
返回:
用于管理子流程的新流程對象
Throws:
Throw名稱 | Throw描述 |
---|---|
SecurityException | 如果存在安全管理器并且其 SecurityManager#checkExec 方法不允許創(chuàng)建子進(jìn)程 |
IOException | 如果發(fā)生 I/O 錯誤 |
NullPointerException | 如果 command 為 null,或者 envp 的元素之一為 null |
IllegalArgumentException | 如果命令為empty |
public Process exec(String[] cmdarray) throws IOException
在單獨(dú)的進(jìn)程中執(zhí)行指定的命令和參數(shù)。
這是一種方便的方法。 exec(cmdarray) 形式的調(diào)用與調(diào)用 exec(cmdarray, null, null) 的行為方式完全相同。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
cmdarray | 包含要調(diào)用的命令及其參數(shù)的數(shù)組。 |
返回:
用于管理子流程的新流程對象
Throws:
Throw名稱 | Throw描述 |
---|---|
SecurityException | 如果存在安全管理器并且其 SecurityManager#checkExec 方法不允許創(chuàng)建子進(jìn)程 |
IOException | 如果發(fā)生 I/O 錯誤 |
NullPointerException | 如果 cmdarray 為 null,或者 cmdarray 的元素之一為 null |
IndexOutOfBoundsException | 如果 cmdarray 是一個空數(shù)組(長度為 0) |
public Process exec(String[] cmdarray, String[] envp) throws IOException
在具有指定環(huán)境的單獨(dú)進(jìn)程中執(zhí)行指定的命令和參數(shù)。
這是一種方便的方法。 exec(cmdarray, envp) 形式的調(diào)用與調(diào)用 exec(cmdarray, envp, null) 的行為方式完全相同。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
cmdarray | 包含要調(diào)用的命令及其參數(shù)的數(shù)組。 |
envp | 字符串?dāng)?shù)組,其中每個元素都具有格式 name=value 的環(huán)境變量設(shè)置,如果子進(jìn)程應(yīng)繼承當(dāng)前進(jìn)程的環(huán)境,則為 null。 |
返回:
用于管理子流程的新流程對象
Throws:
Throw名稱 | Throw描述 |
---|---|
SecurityException | 如果存在安全管理器并且其 SecurityManager#checkExec 方法不允許創(chuàng)建子進(jìn)程 |
IOException | 如果發(fā)生 I/O 錯誤 |
NullPointerException | 如果 cmdarray 為 null,或者 cmdarray 的元素之一為 null,或者 envp 的元素之一為 null |
IndexOutOfBoundsException | 如果 cmdarray 是一個空數(shù)組(長度為 0) |
public Process exec(String[] cmdarray, String[] envp, File dir) throws IOException
在具有指定環(huán)境和工作目錄的單獨(dú)進(jìn)程中執(zhí)行指定的命令和參數(shù)。
給定一個字符串?dāng)?shù)組 cmdarray,表示命令行的標(biāo)記,和一個字符串?dāng)?shù)組 envp,表示“環(huán)境”變量設(shè)置,這個方法創(chuàng)建一個新進(jìn)程來執(zhí)行指定的命令。
此方法檢查 cmdarray 是否為有效的操作系統(tǒng)命令。哪些命令有效取決于系統(tǒng),但至少該命令必須是非空字符串的非空列表。
如果 envp 為 null,則子進(jìn)程繼承當(dāng)前進(jìn)程的環(huán)境設(shè)置。
在某些操作系統(tǒng)上啟動進(jìn)程可能需要一組最小的系統(tǒng)相關(guān)環(huán)境變量。因此,子進(jìn)程可能會繼承指定環(huán)境之外的其他環(huán)境變量設(shè)置。
ProcessBuilder#start() 現(xiàn)在是使用修改后的環(huán)境啟動進(jìn)程的首選方式。
新子進(jìn)程的工作目錄由 dir 指定。如果 dir 為 null,則子進(jìn)程繼承當(dāng)前進(jìn)程的當(dāng)前工作目錄。
如果存在安全管理器,則使用數(shù)組 cmdarray 的第一個組件作為其參數(shù)調(diào)用其 SecurityManager#checkExec 方法。這可能會導(dǎo)致拋出 SecurityException。
啟動操作系統(tǒng)進(jìn)程高度依賴于系統(tǒng)??赡艹鲥e的許多事情包括:
在這種情況下會拋出異常。 異常的確切性質(zhì)取決于系統(tǒng),但它始終是 IOException 的子類。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
cmdarray | 包含要調(diào)用的命令及其參數(shù)的數(shù)組。 |
envp | 字符串?dāng)?shù)組,其中每個元素的環(huán)境變量設(shè)置格式為 name=value,如果子進(jìn)程應(yīng)繼承當(dāng)前進(jìn)程的環(huán)境,則為 null。 |
dir | 子進(jìn)程的工作目錄,如果子進(jìn)程應(yīng)該繼承當(dāng)前進(jìn)程的工作目錄,則返回 null。 |
返回:
用于管理子流程的新流程對象
Throws:
Throw名稱 | Throw描述 |
---|---|
SecurityException | 如果存在安全管理器并且其 SecurityManager#checkExec 方法不允許創(chuàng)建子進(jìn)程 |
IOException | 如果發(fā)生 I/O 錯誤 |
NullPointerException | 如果 cmdarray 為 null,或者 cmdarray 的元素之一為 null,或者 envp 的元素之一為 null |
IndexOutOfBoundsException | 如果 cmdarray 是一個空數(shù)組(長度為 0) |
public int availableProcessors()
返回 Java 虛擬機(jī)可用的處理器數(shù)量。
此值可能會在虛擬機(jī)的特定調(diào)用期間發(fā)生變化。 因此,對可用處理器數(shù)量敏感的應(yīng)用程序應(yīng)偶爾輪詢此屬性并適當(dāng)調(diào)整其資源使用情況。
返回:
虛擬機(jī)可用的最大處理器數(shù)量; 從不小于一
public long freeMemory()
返回 Java 虛擬機(jī)中的可用內(nèi)存量。 調(diào)用 gc 方法可能會導(dǎo)致 freeMemory 返回的值增加。
返回:
當(dāng)前可用于未來分配的對象的內(nèi)存總量的近似值,以字節(jié)為單位。
public long totalMemory()
返回 Java 虛擬機(jī)中的內(nèi)存總量。 此方法返回的值可能會隨時間變化,具體取決于主機(jī)環(huán)境。
請注意,保存任何給定類型的對象所需的內(nèi)存量可能取決于實(shí)現(xiàn)。
返回:
當(dāng)前可用于當(dāng)前和未來對象的內(nèi)存總量,以字節(jié)為單位。
public long maxMemory()
返回 Java 虛擬機(jī)將嘗試使用的最大內(nèi)存量。 如果沒有固有限制,則返回 Long.MAX_VALUE 值。
返回:
虛擬機(jī)將嘗試使用的最大內(nèi)存量,以字節(jié)為單位
public void gc()
運(yùn)行垃圾收集器。 調(diào)用此方法表明 Java 虛擬機(jī)花費(fèi)精力回收未使用的對象,以使它們當(dāng)前占用的內(nèi)存可用于快速重用。 當(dāng)控制從方法調(diào)用返回時,虛擬機(jī)已盡最大努力回收所有丟棄的對象。
gc 這個名字代表“垃圾收集器”。 虛擬機(jī)根據(jù)需要在單獨(dú)的線程中自動執(zhí)行此回收過程,即使沒有顯式調(diào)用 gc 方法。
System#gc() 方法是調(diào)用此方法的常規(guī)且方便的方法。
public void runFinalization()
運(yùn)行任何等待終結(jié)的對象的終結(jié)方法。 調(diào)用此方法表明 Java 虛擬機(jī)花費(fèi)精力運(yùn)行已發(fā)現(xiàn)已丟棄但尚未運(yùn)行其 finalize 方法的對象的 finalize 方法。 當(dāng)控制從方法調(diào)用返回時,虛擬機(jī)已盡最大努力完成所有未完成的終結(jié)。
如果未顯式調(diào)用 runFinalization 方法,則虛擬機(jī)會根據(jù)需要在單獨(dú)的線程中自動執(zhí)行終結(jié)過程。
System#runFinalization() 方法是調(diào)用此方法的常規(guī)且方便的方法。
public void traceInstructions(boolean on)
啟用/禁用指令跟蹤。 如果布爾參數(shù)為真,則此方法建議 Java 虛擬機(jī)在執(zhí)行時為虛擬機(jī)中的每條指令發(fā)出調(diào)試信息。 此信息的格式以及將其發(fā)送到的文件或其他輸出流取決于主機(jī)環(huán)境。 如果虛擬機(jī)不支持此功能,它可能會忽略此請求。 跟蹤輸出的目的地取決于系統(tǒng)。
如果布爾參數(shù)為假,此方法會導(dǎo)致虛擬機(jī)停止執(zhí)行它正在執(zhí)行的詳細(xì)指令跟蹤。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
on | true 啟用指令跟蹤; false 禁用此功能。 |
public void traceMethodCalls(boolean on)
啟用/禁用方法調(diào)用的跟蹤。 如果布爾參數(shù)為真,則此方法建議 Java 虛擬機(jī)在調(diào)用虛擬機(jī)時為虛擬機(jī)中的每個方法發(fā)出調(diào)試信息。 此信息的格式以及將其發(fā)送到的文件或其他輸出流取決于主機(jī)環(huán)境。 如果虛擬機(jī)不支持此功能,它可能會忽略此請求。
使用參數(shù) false 調(diào)用此方法表明虛擬機(jī)停止發(fā)出每次調(diào)用的調(diào)試信息。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
on | true 啟用指令跟蹤; false 禁用此功能。 |
public void load(String filename)
加載由文件名參數(shù)指定的本機(jī)庫。文件名參數(shù)必須是絕對路徑名。 (例如 Runtime.getRuntime().load("/home/avh/lib/libX11.so");)。如果 filename 參數(shù)在去除任何特定于平臺的庫前綴、路徑和文件擴(kuò)展名后,指示名稱為 L 的庫,并且名為 L 的本機(jī)庫與 VM 靜態(tài)鏈接,則 JNI_OnLoad_L 函數(shù)調(diào)用由庫導(dǎo)出的,而不是嘗試加載動態(tài)庫。與參數(shù)匹配的文件名不必存在于文件系統(tǒng)中。有關(guān)更多詳細(xì)信息,請參閱 JNI 規(guī)范。否則,文件名參數(shù)以與實(shí)現(xiàn)相關(guān)的方式映射到本機(jī)庫映像。
首先,如果有一個安全管理器,它的 checkLink 方法以文件名作為它的參數(shù)被調(diào)用。這可能會導(dǎo)致安全異常。
這類似于方法 loadLibrary(java.lang.String),但它接受一個通用文件名作為參數(shù),而不僅僅是一個庫名,允許加載任何本地代碼文件。
System#load(String) 方法是調(diào)用此方法的常規(guī)且方便的方法。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
filename | 要加載的文件。 |
Throws:
Throw名稱 | Throw描述 |
---|---|
SecurityException | 如果存在安全管理器并且其 checkLink 方法不允許加載指定的動態(tài)庫 |
UnsatisfiedLinkError | 如果文件名不是絕對路徑名,則本機(jī)庫未與 VM 靜態(tài)鏈接,或者主機(jī)系統(tǒng)無法將庫映射到本機(jī)庫映像。 |
NullPointerException | 如果文件名為空 |
public void loadLibrary(String libname)
加載由 libname 參數(shù)指定的本機(jī)庫。 libname 參數(shù)不得包含任何特定于平臺的前綴、文件擴(kuò)展名或路徑。 如果名為 libname 的本機(jī)庫與 VM 靜態(tài)鏈接,則調(diào)用該庫導(dǎo)出的 JNI_OnLoad_libname 函數(shù)。 有關(guān)更多詳細(xì)信息,請參閱 JNI 規(guī)范。 否則,libname 參數(shù)將從系統(tǒng)庫位置加載并以與實(shí)現(xiàn)相關(guān)的方式映射到本機(jī)庫映像。
首先,如果有一個安全管理器,它的 checkLink 方法會以 libname 作為參數(shù)調(diào)用。 這可能會導(dǎo)致安全異常。
System#loadLibrary(String) 方法是調(diào)用此方法的常規(guī)且方便的方法。 如果要在類的實(shí)現(xiàn)中使用本地方法,標(biāo)準(zhǔn)策略是將本地代碼放入庫文件(稱為 LibFile)中,然后放入靜態(tài)初始化程序:
static { System.loadLibrary("LibFile"); }
在類聲明中。 當(dāng)類被加載和初始化時,本地方法的必要本地代碼實(shí)現(xiàn)也將被加載。
如果使用相同的庫名稱多次調(diào)用此方法,則忽略第二次和后續(xù)調(diào)用。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
libname | 庫的名稱。 |
Throws:
Throw名稱 | Throw描述 |
---|---|
SecurityException | 如果存在安全管理器并且其 checkLink 方法不允許加載指定的動態(tài)庫 |
UnsatisfiedLinkError | 如果 libname 參數(shù)包含文件路徑,則本機(jī)庫未與 VM 靜態(tài)鏈接,或者該庫無法由主機(jī)系統(tǒng)映射到本機(jī)庫映像。 |
NullPointerException | 如果 libname 為空 |
@Deprecated public InputStream getLocalizedInputStream(InputStream in)
已棄用。 從 JDK 1.1 開始,將本地編碼中的字節(jié)流轉(zhuǎn)換為 Unicode 中的字符流的首選方法是通過 InputStreamReader 和 BufferedReader 類。
創(chuàng)建輸入流的本地化版本。 此方法接受一個 InputStream 并返回一個在所有方面都與參數(shù)等效的 InputStream,除了它是本地化的:當(dāng)從流中讀取本地字符集中的字符時,它們會自動從本地字符集轉(zhuǎn)換為 Unicode。
如果參數(shù)已經(jīng)是本地化流,則可以將其作為結(jié)果返回。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
in | InputStream 進(jìn)行本地化 |
返回:
本地化輸入流
@Deprecated public OutputStream getLocalizedOutputStream(OutputStream out)
已棄用。 從 JDK 1.1 開始,將 Unicode 字符流轉(zhuǎn)換為本地編碼的字節(jié)流的首選方法是通過 OutputStreamWriter、BufferedWriter 和 PrintWriter 類。
創(chuàng)建輸出流的本地化版本。 此方法接受一個 OutputStream 并返回一個在所有方面都與參數(shù)等效的 OutputStream,除了它是本地化的:當(dāng) Unicode 字符寫入流時,它們會自動轉(zhuǎn)換為本地字符集。
如果參數(shù)已經(jīng)是本地化流,則可以將其作為結(jié)果返回。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
out | OutputStream 進(jìn)行本地化 |
返回:
本地化的輸出流
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: