Spec-Zone .ru
спецификации, руководства, описания, API
|
public class Runtime extends Object
Runtime
это позволяет приложению взаимодействовать через интерфейс со средой, в которой работает приложение. Текущее время выполнения может быть получено из getRuntime
метод. Приложение не может создать свой собственный экземпляр этого класса.
getRuntime()
Модификатор и Тип | Метод и Описание |
---|---|
void |
addShutdownHook(Thread hook)
Регистрирует новый рычаг завершения работы виртуальной машины.
|
int |
availableProcessors()
Возвращает число процессоров, доступных виртуальной машине Java.
|
Процесс |
exec(String command)
Выполняет указанную строковую команду в отдельном процессе.
|
Процесс |
exec(String[] cmdarray)
Выполняет указанную команду и параметры в отдельном процессе.
|
Процесс |
exec(String[] cmdarray, String[] envp)
Выполняет указанную команду и параметры в разделять процессе с указанной средой.
|
Процесс |
exec(String[] cmdarray, String[] envp, File dir)
Выполняет указанную команду и параметры в разделять процессе с указанной средой и рабочим каталогом.
|
Процесс |
exec(String command, String[] envp)
Выполняет указанную строковую команду в разделять процессе с указанной средой.
|
Процесс |
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)
Загружает динамическую библиотеку указанным именем библиотеки.
|
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
объект связался с текущим приложением Java.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
ожидание состоит в том, что виртуальная машина быстро завершит работу и выйдет. Когда виртуальная машина завершается из-за пользовательского выхода из системы или завершения работы системы, базовая операционная система может только позволить установленную сумму времени, в которое можно завершить работу и выйти. Это поэтому нецелесообразно, чтобы делать попытку любого взаимодействия с пользователем или выполнить продолжительное вычисление в рычаге завершения работы.
Непойманные исключения обрабатываются в рычагах завершения работы так же, как в любом другом потоке, вызывая uncaughtException
метод потока ThreadGroup
объект. Реализация по умолчанию этого метода печатает трассировку стека исключения к System.err
и завершает поток; это не заставляет виртуальную машину выходить или останавливаться.
При редких обстоятельствах виртуальная машина может прерваться, то есть, прекратите работать, не завершая работу чисто. Это происходит, когда виртуальная машина завершается внешне, например с сигналом SIGKILL на Unix или запросе TerminateProcess к Microsoft Windows. Виртуальная машина может также прерваться, если собственный метод спутывается, например, повреждая внутренние структуры данных или пытаясь получить доступ к несуществующей памяти. Если виртуальная машина прерывается тогда, никакая гарантия не может быть сделана о том, будут ли какие-либо рычаги завершения работы выполнены.
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
- Если ошибка ввода-вывода происходитNullPointerException
- Если command
null
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
- массив строк, у каждого элемента которых есть настройки переменной окружения в формате name=value, или null, если подпроцесс должен наследовать среду текущего процесса.Process
объект для того, чтобы управлять подпроцессомSecurityException
- Если менеджер безопасности существует и checkExec
метод не позволяет создание подпроцессаIOException
- Если ошибка ввода-вывода происходит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
строка повреждается в маркеры, используя a StringTokenizer
создаваемый вызовом new
без дальнейшей модификации символьных категорий. Маркеры, произведенные токенизатором, тогда помещаются в новый строковый массив StringTokenizer
(command)cmdarray
, в том же самом порядке.
command
- указанная системная команда.envp
- массив строк, у каждого элемента которых есть настройки переменной окружения в формате name=value, или null, если подпроцесс должен наследовать среду текущего процесса.dir
- рабочий каталог подпроцесса, или null, если подпроцесс должен наследовать рабочий каталог текущего процесса.Process
объект для того, чтобы управлять подпроцессомSecurityException
- Если менеджер безопасности существует и checkExec
метод не позволяет создание подпроцессаIOException
- Если ошибка ввода-вывода происходит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
- Если ошибка ввода-вывода происходит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
- массив строк, у каждого элемента которых есть настройки переменной окружения в формате name=value, или null, если подпроцесс должен наследовать среду текущего процесса.Process
объект для того, чтобы управлять подпроцессомSecurityException
- Если менеджер безопасности существует и checkExec
метод не позволяет создание подпроцессаIOException
- Если ошибка ввода-вывода происходит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
как его параметр. Это может привести к a SecurityException
быть брошенным.
Запуск процесса операционной системы очень системно-зависим. Среди многих вещей, которые могут пойти не так, как надо:
В таких случаях будет выдано исключение. Точный характер исключения системно-зависим, но это всегда будет подкласс IOException
.
cmdarray
- массив, содержащий команду, чтобы вызвать и ее параметры.envp
- массив строк, у каждого элемента которых есть настройки переменной окружения в формате name=value, или null, если подпроцесс должен наследовать среду текущего процесса.dir
- рабочий каталог подпроцесса, или null, если подпроцесс должен наследовать рабочий каталог текущего процесса.Process
объект для того, чтобы управлять подпроцессомSecurityException
- Если менеджер безопасности существует и checkExec
метод не позволяет создание подпроцессаIOException
- Если ошибка ввода-вывода происходит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
методы еще не были выполнены. Когда возвраты управления из вызова метода, виртуальная машина сделала максимальные усилия, чтобы завершить все выдающиеся завершения. Виртуальная машина выполняет процесс завершения автоматически как необходимый, в отдельном потоке, если 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");
). Во-первых, если есть менеджер безопасности, checkLink
метод вызывают с filename
как его параметр. Это может привести к исключению безопасности.
Это подобно методу loadLibrary(String)
, но это принимает общее имя файла как параметр, а не только имя библиотеки, позволяя любой файл собственного кода быть загруженным.
Метод System.load(String)
стандартные и удобные средства вызова этого метода.
filename
- файл, чтобы загрузиться.SecurityException
- если менеджер безопасности существует и checkLink
метод не позволяет загружаться указанной динамической библиотекиUnsatisfiedLinkError
- если файл не существует.NullPointerException
- если filename
null
getRuntime()
, SecurityException
, SecurityManager.checkLink(java.lang.String)
public void loadLibrary(String libname)
Во-первых, если есть менеджер безопасности, checkLink
метод вызывают с libname
как его параметр. Это может привести к исключению безопасности.
Метод System.loadLibrary(String)
стандартные и удобные средства вызова этого метода. Если собственные методы должны использоваться в реализации класса, стандартная стратегия состоит в том, чтобы поместить собственный код в файл библиотеки (вызовите это LibFile
) и затем помещать статический инициализатор:
в пределах объявления класса. Когда класс будет загружен и инициализируется, необходимая собственная реализация кода для собственных методов будет тогда загружена также.static { System.loadLibrary("LibFile"); }
Если этот метод вызывают не раз с тем же самым именем библиотеки, вторые и последующие вызовы игнорируются.
libname
- имя библиотеки.SecurityException
- если менеджер безопасности существует и checkLink
метод не позволяет загружаться указанной динамической библиотекиUnsatisfiedLinkError
- если библиотека не существует.NullPointerException
- если libname
null
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)
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.