Spec-Zone.ru › OpenJDK 17

Класс Runtime

java.lang.Object
java.lang.Runtime
public class Runtime extends Object
В каждом приложении Java существует единственный экземпляр класса Runtime, который позволяет приложению взаимодействовать со средой, в которой оно выполняется. Текущий экземпляр runtime можно получить с помощью метода getRuntime.

Приложение не может создать собственный экземпляр этого класса.

С момента:
1.0
См. также:
  • getRuntime()

Краткое описание вложенных классов

Модификатор и тип Класс Описание
static final class  Runtime.Version
Представление строкового значения версии реализации платформы Java SE.

Краткое описание методов

Модификатор и тип Метод Описание
void availableProcessors()
Регистрирует новый обработчик завершения работы виртуальной машины.
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()
Выполняет сборщик мусора в виртуальной машине Java.
static Runtime getRuntime()
Возвращает объект runtime, связанный с текущим приложением Java.
void halt(int status)
Принудительно завершает текущую виртуальную машину Java.
void load(String filename)
Загружает нативный модуль, указанный в аргументе filename.
void loadLibrary(String libname)
Загружает нативный модуль, указанный в аргументе libname.
long maxMemory()
Возвращает максимальный объём памяти, который виртуальная машина Java попытается использовать.
boolean removeShutdownHook(Thread hook)
Отменяет регистрацию ранее зарегистрированного обработчика завершения работы виртуальной машины.
void runFinalization()
Выполняет методы финализации для любых объектов, ожидающих финализации.
long totalMemory()
Возвращает общий объём памяти в виртуальной машине Java.
static Runtime.Version version()
Возвращает версию среды исполнения Java в виде объекта Runtime.Version.

Методы, унаследованные от класса java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробности методов

getRuntime

public static Runtime getRuntime()
Возвращает объект runtime, связанный с текущим приложением Java. Большинство методов класса Runtime являются методами экземпляра и должны вызываться относительно текущего объекта runtime.
Возвращает:
объект Runtime , связанный с текущим приложением Java.

exit

public void exit(int status)
Завершает выполнение текущей виртуальной машины Java, инициируя последовательность завершения работы. Этот метод никогда не возвращает результат. Аргумент используется в качестве кода состояния; по соглашению, ненулевой код состояния указывает на аномальное завершение.

Все зарегистрированные обработчики завершения работы, если таковые имеются, запускаются в некотором неопределённом порядке и могут выполняться параллельно до завершения. После этого виртуальная машина останавливается.

Если этот метод вызывается после того, как все обработчики завершения работы уже были выполнены, и статус ненулевой, то этот метод останавливает виртуальную машину с указанным кодом состояния. В противном случае этот метод блокируется неопределённое время.

Метод System.exit является стандартным и удобным способом вызова этого метода.

Параметры:
status - Код состояния завершения. По соглашению, ненулевой код состояния указывает на аномальное завершение.
Исключения:
SecurityException - Если присутствует менеджер безопасности, и его метод checkExit не разрешает выход с указанным статусом
См. также:
  • SecurityException
  • SecurityManager.checkExit(int)
  • addShutdownHook(java.lang.Thread)
  • removeShutdownHook(java.lang.Thread)
  • halt(int)

addShutdownHook

public void addShutdownHook(Thread hook)
Регистрирует новый обработчик завершения работы виртуальной машины.

Виртуальная машина Java завершает работу в ответ на два вида событий:

  • Программа завершается нормально, когда завершается последний нить, не являющаяся демо-нитью, или когда вызывается метод exit (эквивалентно, System.exit), или
  • Виртуальная машина останавливается в ответ на прерывание пользователя, такое как нажатие ^C, или системное событие, такое как выход пользователя или выключение системы.

Обработчик завершения работы — это просто инициализированная, но не запущенная нить. Когда виртуальная машина начинает последовательность завершения работы, она запустит все зарегистрированные обработчики завершения работы в некотором неопределённом порядке и позволит им выполняться параллельно. После завершения работы всех обработчиков она остановится. Обратите внимание, что демо-нити будут продолжать выполняться во время последовательности завершения работы, а также нити, не являющиеся демо-нитями, если завершение было инициировано вызовом метода exit.

После начала последовательности завершения работы её можно остановить только путём вызова метода halt, который насильственно завершает работу виртуальной машины.

После начала последовательности завершения работы невозможно зарегистрировать новый обработчик завершения работы или дезактивировать ранее зарегистрированный обработчик. Попытка выполнения любой из этих операций приведёт к возникновению исключения IllegalStateException.

Обработчики завершения работы работают в деликатное время жизненного цикла виртуальной машины и поэтому должны быть запрограммированы с учётом этого. В частности, они должны быть написаны так, чтобы быть потокобезопасными и избегать тупиковых ситуаций по мере возможности. Они также не должны слепо полагаться на службы, которые могут зарегистрировать собственные обработчики завершения работы и, следовательно, сами могут находиться в процессе завершения. Попытки использовать другие службы на основе потоков, такие как поток диспетчеризации событий AWT, например, могут привести к тупиковым ситуациям.

Обработчики завершения работы также должны быстро завершать свою работу. Когда программа вызывает exit, ожидается, что виртуальная машина быстро завершит работу и выйдет. Когда виртуальная машина завершается из-за выхода пользователя или выключения системы, базовая операционная система может позволить только ограниченное количество времени на завершение и выход. Поэтому не рекомендуется пытаться взаимодействовать с пользователем или выполнять длительные вычисления в обработчике завершения работы.

Необработанные исключения обрабатываются в обработчиках завершения работы так же, как и в любой другой нити, путём вызова метода uncaughtException объекта ThreadGroup нити. По умолчанию этот метод печатает трассировку стека исключения в System.err и завершает нить; это не приводит к выходу или остановке виртуальной машины.

В редких случаях виртуальная машина может прерваться, то есть остановиться, не завершив работу должным образом. Это происходит, когда виртуальная машина завершается внешне, например, с сигналом SIGKILL в Unix или вызовом TerminateProcess в Microsoft Windows. Виртуальная машина также может прерваться, если нативный метод работает неправильно, например, повреждая внутренние структуры данных или пытаясь получить доступ к несуществующей памяти. Если виртуальная машина прервётся, то нельзя гарантировать, будут ли запущены какие-либо обработчики завершения работы.

Параметры:
hook - Инициализированный, но незапущенный объект Thread
Исключения:
IllegalArgumentException - Если указанный обработчик уже зарегистрирован, или если можно определить, что обработчик уже запущен или уже был запущен
IllegalStateException - Если виртуальная машина уже находится в процессе завершения работы
SecurityException - Если присутствует менеджер безопасности, и он запрещает RuntimePermission("shutdownHooks")
С:
1.3
См. также:
  • removeShutdownHook(java.lang.Thread)
  • halt(int)
  • exit(int)

removeShutdownHook

public boolean removeShutdownHook(Thread hook)
Дерегистрирует ранее зарегистрированный обработчик завершения работы виртуальной машины.
Параметры:
hook - обработчик для удаления
Возвращает:
true если указанный обработчик был ранее зарегистрирован и успешно дезактивирован, false в противном случае.
Исключения:
IllegalStateException - Если виртуальная машина уже находится в процессе завершения работы
SecurityException - Если присутствует менеджер безопасности, и он запрещает RuntimePermission("shutdownHooks")
С:
1.3
См. также:
  • addShutdownHook(java.lang.Thread)
  • exit(int)

halt

public void halt(int status)
Принудительно завершает работу текущей виртуальной машины Java. Этот метод никогда не возвращает результат.

Этот метод следует использовать с большой осторожностью. В отличие от метода exit, этот метод не заставляет запускаться обработчики завершения работы. Если последовательность завершения работы уже началась, то этот метод не ожидает завершения работы ни одного обработчика завершения работы.

Параметры:
status - Код состояния завершения. По соглашению, ненулевой код состояния указывает на аномальное завершение. Если метод exit (эквивалентно System.exit) уже был вызван, то этот код состояния переопределит код состояния, переданный этому методу.
Исключения:
SecurityException - Если присутствует менеджер безопасности, и его метод checkExit не разрешает выход с указанным статусом
С:
1.3
См. также:
  • exit(int)
  • addShutdownHook(java.lang.Thread)
  • removeShutdownHook(java.lang.Thread)

exec

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

exec

public Process exec(String command, String[] envp) throws IOException
Выполняет указанную строковую команду в отдельном процессе с указанной средой.

Это метод-удобство. Вызов вида exec(command, envp) ведет себя точно так же, как вызов exec(command, envp, null).

Parameters:
command - указанная системная команда.
envp - массив строк, каждая из которых содержит настройки переменных среды в формате имя=значение, или null если дочерний процесс должен унаследовать среду текущего процесса.
Returns:
Новый объект Process для управления дочерним процессом
Throws:
SecurityException - Если существует менеджер безопасности, и его метод checkExec не разрешает создание дочернего процесса
IOException - Если произошла ошибка ввода-вывода
NullPointerException - Если command является null, или один из элементов envp является null
IllegalArgumentException - Если command пусто
See Also:
  • exec(String[], String[], File)
  • ProcessBuilder

exec

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, в том же порядке.

Parameters:
command - указанная системная команда.
envp - массив строк, каждая из которых содержит настройки переменных среды в формате имя=значение, или null если дочерний процесс должен унаследовать среду текущего процесса.
dir - рабочая директория дочернего процесса, или null если дочерний процесс должен унаследовать рабочую директорию текущего процесса.
Returns:
Новый объект Process для управления дочерним процессом
Throws:
SecurityException - Если существует менеджер безопасности, и его метод checkExec не разрешает создание дочернего процесса
IOException - Если произошла ошибка ввода-вывода
NullPointerException - Если command является null, или один из элементов envp является null
IllegalArgumentException - Если command пуста
Since:
1.3
See Also:
  • ProcessBuilder

exec

public Process exec(String[] cmdarray) throws IOException
Выполняет указанную команду и аргументы в отдельном процессе.

Это метод-удобство. Вызов вида exec(cmdarray) ведет себя точно так же, как вызов exec(cmdarray, null, null).

Parameters:
cmdarray - массив, содержащий вызываемую команду и её аргументы.
Returns:
Новый объект Process для управления дочерним процессом
Throws:
SecurityException - Если существует менеджер безопасности, и его метод checkExec не разрешает создание дочернего процесса
IOException - Если произошла ошибка ввода-вывода
NullPointerException - Если cmdarray является null, или один из элементов cmdarray является null
IndexOutOfBoundsException - Если cmdarray является пустым массивом (имеет длину 0)
See Also:
  • ProcessBuilder

exec

public Process exec(String[] cmdarray, String[] envp) throws IOException
Выполняет указанную команду и аргументы в отдельном процессе с указанной средой.

Это метод-удобство. Вызов вида exec(cmdarray, envp) ведет себя точно так же, как вызов exec(cmdarray, envp, null).

Parameters:
cmdarray - массив, содержащий вызываемую команду и её аргументы.
envp - массив строк, каждая из которых содержит настройки переменных среды в формате имя=значение, или null если дочерний процесс должен унаследовать среду текущего процесса.
Returns:
Новый объект Process для управления дочерним процессом
Throws:
SecurityException - Если существует менеджер безопасности, и его метод checkExec не разрешает создание дочернего процесса
IOException - Если произошла ошибка ввода-вывода
NullPointerException - Если cmdarray является null, или один из элементов cmdarray является null, или один из элементов envp является null
IndexOutOfBoundsException - Если cmdarray является пустым массивом (имеет длину 0)
See Also:
  • ProcessBuilder

exec

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.

Если операционная система не поддерживает создание процессов, будет выбрашено исключение UnsupportedOperationException.

Parameters:
cmdarray - массив, содержащий команду для вызова и её аргументы.
envp - массив строк, каждый элемент которого содержит настройки переменной среды в формате имя=значение, или null если дочерний процесс должен унаследовать среду текущего процесса.
dir - рабочая директория дочернего процесса, или null если дочерний процесс должен унаследовать рабочую директорию текущего процесса.
Returns:
Новый объект Process для управления дочерним процессом
Throws:
SecurityException - Если менеджер безопасности существует и его метод checkExec не разрешает создание дочернего процесса
UnsupportedOperationException - Если операционная система не поддерживает создание процессов.
IOException - Если произошла ошибка ввода-вывода
NullPointerException - Если cmdarray равно null, или один из элементов cmdarray равен null, или один из элементов envp равен null
IndexOutOfBoundsException - Если cmdarray - это пустой массив (имеет длину 0)
Since:
1.3
See Also:
  • ProcessBuilder

availableProcessors

public int availableProcessors()
Возвращает количество процессоров, доступных для виртуальной машины Java.

Это значение может меняться во время конкретного вызова виртуальной машины. Приложения, чувствительные к количеству доступных процессоров, поэтому должны периодически опрашивать эту свойство и соответствующим образом настраивать использование ресурсов.

Returns:
максимальное количество процессоров, доступных для виртуальной машины; никогда не меньше единицы
Since:
1.4

freeMemory

public long freeMemory()
Возвращает количество свободной памяти в виртуальной машине Java. Вызов метода gc может привести к увеличению значения, возвращаемого методом freeMemory.
Returns:
приблизительное значение общего количества памяти, в настоящее время доступной для будущих выделенных объектов, измеряется в байтах.

totalMemory

public long totalMemory()
Возвращает общее количество памяти в виртуальной машине Java. Возвращаемое значение этого метода может изменяться со временем в зависимости от среды хоста.

Обратите внимание, что количество памяти, необходимое для хранения объекта любого заданного типа, может зависеть от реализации.

Returns:
общее количество памяти, в настоящее время доступной для текущих и будущих объектов, измеряется в байтах.

maxMemory

public long maxMemory()
Возвращает максимальное количество памяти, которое виртуальная машина Java попытается использовать. Если нет внутреннего ограничения, то будет возвращено значение Long.MAX_VALUE.
Returns:
максимальное количество памяти, которое виртуальная машина попытается использовать, измеряется в байтах
Since:
1.4

gc

public void gc()
Выполняет сборщик мусора в виртуальной машине Java.

Вызов этого метода предполагает, что виртуальная машина Java потратит ресурсы на переработку неиспользуемых объектов, чтобы освободить память, которую они в настоящее время занимают, для повторного использования виртуальной машиной Java. При возврате управления из вызова метода виртуальная машина Java сделает всё возможное, чтобы освободить место от всех неиспользуемых объектов. Нет гарантии, что эти усилия приведут к переработке определённого количества неиспользуемых объектов, освобождению определённого количества памяти или завершению в определённое время, если вообще. Также нет гарантии, что эти усилия приведут к изменению доступности определённого количества объектов или что определённое количество объектов Reference будет очищено и помещено в очередь.

Имя gc означает "сборщик мусора". Виртуальная машина Java выполняет этот процесс переработки автоматически по мере необходимости в отдельном потоке, даже если метод gc не вызывается явно.

Метод System.gc() является общепринятым и удобным способом вызова этого метода.

runFinalization

public void runFinalization()
Выполняет методы finalization любых объектов, ожидающих finalization. Вызов этого метода предполагает, что виртуальная машина Java потратит ресурсы на выполнение методов finalize объектов, которые были обнаружены как удалённые, но чьи методы finalize ещё не были выполнены. При возврате управления из вызова метода виртуальная машина сделает всё возможное для завершения всех ожидающих finalization.

Виртуальная машина выполняет процесс finalization автоматически по мере необходимости в отдельном потоке, если метод runFinalization не вызывается явно.

Метод System.runFinalization() является общепринятым и удобным способом вызова этого метода.

See Also:
  • Object.finalize()

load

public void load(String filename)
Загружает системную библиотеку, указанную аргументом filename. Аргумент 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) является общепринятым и удобным способом вызова этого метода.

Parameters:
filename - файл для загрузки.
Throws:
SecurityException - если существует менеджер безопасности и его метод checkLink не разрешает загрузку указанной динамической библиотеки
UnsatisfiedLinkError - если имя файла не является абсолютным именем файла, системная библиотека не статически связана с VM или библиотека не может быть отображена на изображение системной библиотеки хост-системой.
NullPointerException - если filename равно null
See Also:
  • getRuntime()
  • SecurityException
  • SecurityManager.checkLink(java.lang.String)

loadLibrary

public void loadLibrary(String libname)
Загружает нативную библиотеку, указанную аргументом libname. Аргумент libname не должен содержать никаких платформозависимых префиксов, расширений файлов или путей. Если нативная библиотека, называемая libname, статически связана с виртуальной машиной, то вызывается функция JNI_OnLoad_libname, экспортируемая библиотекой. См. Спецификацию JNI для получения более подробной информации. В противном случае, аргумент libname загружается из системного расположения библиотек и сопоставляется с образом нативной библиотеки способом, зависящим от реализации.

Сначала, если существует менеджер безопасности, вызывается его метод checkLink с аргументом libname. Это может привести к исключению безопасности.

Метод System.loadLibrary(String) является стандартным и удобным способом вызова этого метода. Если нативные методы должны использоваться в реализации класса, стандартная стратегия заключается в размещении нативного кода в файле библиотеки (назовите его LibFile) и затем добавлении статического инициализатора:

 static { System.loadLibrary("LibFile"); }
 
внутри объявления класса. Когда класс загружается и инициализируется, необходимое нативное кодовое реализация для нативных методов также загружается.

Если этот метод вызывается более одного раза с тем же именем библиотеки, второй и последующие вызовы игнорируются.

Параметры:
libname - имя библиотеки.
Исключения:
UnsatisfiedLinkError - если аргумент libname содержит путь к файлу, нативная библиотека не статически связана с виртуальной машиной или библиотека не может быть сопоставлена с изображением нативной библиотеки хост-системой.
NullPointerException - если libname равно null
См. также:
  • SecurityException
  • SecurityManager.checkLink(java.lang.String)

version

public static Runtime.Version version()
Возвращает версию Java Runtime Environment в виде Runtime.Version.
Возвращает:
Runtime.Version Java Runtime Environment
С:
9

© 1993, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Runtime.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API