Spec-Zone.ru › OpenJDK 27

Класс Runtime

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

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

Последовательность завершения работы

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

  1. когда число активных потоков, не являющихся потоками-демонами, впервые становится равным нулю (см. примечание ниже об API вызова JNI);
  2. когда впервые вызывается метод Runtime.exit или System.exit; или
  3. когда происходит внешнее событие, например прерывание или получение сигнала от операционной системы.

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

После начала последовательности завершения работы регистрация и отмена регистрации обработчиков завершения с помощью методов addShutdownHook и removeShutdownHook запрещены. Однако создавать и запускать новые потоки разрешено. Новые потоки выполняются параллельно с зарегистрированными обработчиками завершения и любыми уже выполняющимися потоками-демонами или обычными потоками.

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

Один или несколько обработчиков завершения могут не завершиться, например, из-за бесконечного цикла. В этом случае последовательность завершения работы никогда не закончится. Другие потоки и обработчики завершения продолжают выполняться и могут завершить работу JVM с помощью метода halt.

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

Завершение работы виртуальной машины Java

JVM завершается, когда заканчивается последовательность завершения работы или вызывается метод halt. В отличие от метода exit, метод halt не инициирует последовательность завершения работы.

При завершении работы JVM все потоки немедленно лишаются возможности выполнять дальнейший код Java. Это относится как к обработчикам завершения, так и к потокам-демонам и обычным потокам. Например, это означает, что:

  • текущие методы потоков не завершаются ни нормально, ни аварийно;
  • блоки finally не выполняются;
  • обработчики неперехваченных исключений не запускаются; и
  • ресурсы, открытые с помощью конструкции try-with-resources, не закрываются;
Примечание по реализации:
Собственный код обычно использует API вызова JNI для управления запуском и завершением работы JVM. Такой собственный код вызывает функцию JNI_CreateJavaVM для запуска JVM. Затем собственный код вызывает функцию DestroyJavaVM, чтобы дождаться завершения работы этой JVM. Функция DestroyJavaVM отвечает за инициирование последовательности завершения работы, когда число активных потоков, не являющихся потоками-демонами, впервые становится равным нулю. Когда последовательность завершения работы заканчивается и JVM завершает работу, управление возвращается собственному коду, вызвавшему DestroyJavaVM. Такое поведение отличается от поведения методов exit и halt. Эти методы обычно завершают процесс операционной системы, в котором размещена JVM, и не взаимодействуют с API вызова JNI.
См. Спецификацию языка Java:
12.8 Выход из программы
Начиная с версии:
1.0
Внешние спецификации
  • Спецификация интерфейса Java Native Interface
См. также:
  • getRuntime()

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

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

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

Модификатор и тип Метод Описание
void addShutdownHook(Thread hook)
Регистрирует новый обработчик завершения работы виртуальной машины.
int availableProcessors()
Возвращает число процессоров, доступных виртуальной машине Java.
Process exec(String command)
Устарел.
Этот метод подвержен ошибкам и не должен использоваться; вместо него следует использовать соответствующий метод exec(String[]) или ProcessBuilder.
Process exec(String[] cmdarray)
Выполняет указанную команду с аргументами в отдельном процессе.
Process exec(String[] cmdarray, String[] envp)
Выполняет указанную команду с аргументами в отдельном процессе с заданным окружением.
Process exec(String[] cmdarray, String[] envp, File dir)
Выполняет указанную команду с аргументами в отдельном процессе с заданными окружением и рабочим каталогом.
Process exec(String command, String[] envp)
Устарел.
Этот метод подвержен ошибкам и не должен использоваться; вместо него следует использовать соответствующий метод exec(String[], String[]) или ProcessBuilder.
Process exec(String command, String[] envp, File dir)
Устарел.
Этот метод подвержен ошибкам и не должен использоваться; вместо него следует использовать соответствующий метод exec(String[], String[], File) или ProcessBuilder.
void exit(int status)
Инициирует последовательность завершения работы виртуальной машины Java.
long freeMemory()
Возвращает объём свободной памяти в виртуальной машине Java.
void gc()
Запускает сборщик мусора в виртуальной машине Java.
static Runtime getRuntime()
Возвращает объект среды выполнения, связанный с текущим 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()
Устарел, будет удалён: этот элемент API может быть удалён в будущей версии.
Финализация помечена как устаревшая и подлежащая удалению.
long totalMemory()
Возвращает общий объём памяти в виртуальной машине Java.
static Runtime.Version version()
Возвращает версию среды выполнения Java в виде Runtime.Version.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли какой-либо другой объект этому объекту.
protected void finalize()
Устарел, будет удалён: этот элемент API может быть удалён в будущей версии.
Финализация устарела и подлежит удалению в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения заданного промежутка реального времени.

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

getRuntime

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

exit

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

Аргумент служит кодом состояния. По соглашению ненулевой код состояния указывает на аварийное завершение.

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

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

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

Примечание по реализации:
Если для системного регистратора системный регистратор для java.lang.Runtime включено ведение журнала с уровнем Level.DEBUG, трассировка стека вызова Runtime.exit() заносится в журнал.
Параметры:
status — состояние завершения. По соглашению ненулевой код состояния указывает на аварийное завершение.
См. также:
  • addShutdownHook(Thread)
  • removeShutdownHook(Thread)
  • halt(int)

addShutdownHook

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

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

Неперехваченные исключения обрабатываются в обработчиках завершения работы так же, как и в любом другом потоке, согласно спецификации Thread.UncaughtExceptionHandler. После завершения работы обработчика неперехваченных исключений считается, что обработчик завершения работы завершил работу; он не рассматривается иначе, чем обработчик, завершивший работу без выброса неперехваченного исключения.

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

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

Параметры:
hook — инициализированный, но не запущенный объект Thread
Выбрасывает:
IllegalArgumentException — если тот же обработчик (сравниваемый с помощью ==), что и указанный обработчик, уже зарегистрирован либо можно определить, что обработчик уже выполняется или уже выполнялся
IllegalStateException — если последовательность завершения работы уже началась
Начиная с версии:
1.3
См. также:
  • removeShutdownHook(Thread)
  • halt(int)
  • exit(int)

removeShutdownHook

public boolean removeShutdownHook(Thread hook)
Отменяет регистрацию ранее зарегистрированного обработчика завершения работы виртуальной машины. Обработчики сравниваются с помощью ==. Регистрация и отмена регистрации обработчиков завершения работы запрещены после начала последовательности завершения работы.
Параметры:
hook — обработчик, который требуется удалить
Возвращает:
true, если указанный обработчик был зарегистрирован ранее и его регистрацию удалось отменить; в противном случае — false.
Выбрасывает:
IllegalStateException — если последовательность завершения работы уже началась
Начиная с версии:
1.3
См. также:
  • addShutdownHook(Thread)
  • exit(int)

halt

public void halt(int status)
Немедленно завершает работу виртуальной машины Java. Завершение работы виртуальной машины Java выполняется безусловно и немедленно. Этот метод не запускает последовательность завершения работы и не ожидает ее окончания, если она уже выполняется. Вызов этого метода никогда не завершается нормально.
Примечание к API:
Этот метод следует использовать с особой осторожностью. Его использование может обойти или нарушить любые действия по очистке, предусмотренные обработчиками завершения работы, что может привести к повреждению данных. Другие возможные последствия принудительного завершения работы виртуальной машины Java описаны выше в разделе завершение работы.
Параметры:
status — состояние завершения. По соглашению ненулевой код состояния указывает на аварийное завершение. Если метод exit (или, что эквивалентно, System.exit) уже был вызван, этот код состояния переопределит код состояния, переданный этому методу.
Начиная с версии:
1.3
См. также:
  • exit(int)
  • addShutdownHook(Thread)
  • removeShutdownHook(Thread)

exec

@Deprecated(since="18") public Process exec(String command) throws IOException
Устарело.
Этот метод подвержен ошибкам и не должен использоваться; вместо него следует использовать соответствующий метод exec(String[]) или ProcessBuilder. Строка команды разбивается на токены с использованием только пробельных символов. Если аргумент содержит пробел, например имя файла, это может привести к проблемам, поскольку токен не будет включать полное имя файла.
Выполняет указанную строковую команду в отдельном процессе.

Это вспомогательный метод. Вызов вида exec(command) ведет себя в точности так же, как вызов exec(command, null, null).

Примечание по реализации:
В эталонной реализации можно включить ведение журнала созданного процесса; подробности см. в разделе ProcessBuilder.start().
Параметры:
command — указанная системная команда.
Возвращает:
Новый объект Process для управления подпроцессом
Выбрасывает:
IOException — если возникает ошибка ввода-вывода
NullPointerException — если command равно null
IllegalArgumentException — если command пуст
См. также:
  • exec(String[], String[], File)
  • ProcessBuilder

exec

@Deprecated(since="18") public Process exec(String command, String[] envp) throws IOException
Устарело.
Этот метод подвержен ошибкам и не должен использоваться; вместо него следует использовать соответствующий метод exec(String[], String[]) или ProcessBuilder. Строка команды разбивается на токены с использованием только пробельных символов. Если аргумент содержит пробел, например имя файла, это может привести к проблемам, поскольку токен не будет включать полное имя файла.
Выполняет указанную строковую команду в отдельном процессе с указанным окружением.

Это вспомогательный метод. Вызов вида exec(command, envp) ведет себя в точности так же, как вызов exec(command, envp, null).

Примечание по реализации:
В эталонной реализации можно включить ведение журнала созданного процесса; подробности см. в разделе ProcessBuilder.start().
Параметры:
command — указанная системная команда.
envp — массив строк, каждый элемент которого содержит настройки переменных окружения в формате имя=значение, или null, если подпроцесс должен наследовать окружение текущего процесса.
Возвращает:
Новый объект Process для управления подпроцессом
Выбрасывает:
IOException — если возникает ошибка ввода-вывода
NullPointerException — если command равно null или один из элементов envp равен null
IllegalArgumentException — если command пуст
См. также:
  • exec(String[], String[], File)
  • ProcessBuilder

exec

@Deprecated(since="18") public Process exec(String command, String[] envp, File dir) throws IOException
Устарело.
Этот метод подвержен ошибкам и не должен использоваться; вместо него следует использовать соответствующий метод exec(String[], String[], File) или ProcessBuilder. Строка команды разбивается на токены с использованием только пробельных символов. Если аргумент содержит пробел, например имя файла, это может привести к проблемам, поскольку токен не будет включать полное имя файла.
Выполняет указанную строковую команду в отдельном процессе с указанным окружением и рабочим каталогом.

Это вспомогательный метод. Вызов вида exec(command, envp, dir) ведет себя в точности так же, как вызов exec(cmdarray, envp, dir), где cmdarray — массив всех токенов в command.

Точнее, строка command разбивается на токены с помощью StringTokenizer, созданного вызовом new StringTokenizer(command), без дальнейшего изменения категорий символов. Затем токены, полученные токенизатором, помещаются в новый строковый массив cmdarray в том же порядке.

Примечание по реализации:
В эталонной реализации можно включить ведение журнала созданного процесса; подробности см. в разделе ProcessBuilder.start().
Параметры:
command — указанная системная команда.
envp — массив строк, каждый элемент которого содержит настройки переменных окружения в формате имя=значение, или null, если подпроцесс должен наследовать окружение текущего процесса.
dir — рабочий каталог подпроцесса или null, если подпроцесс должен наследовать рабочий каталог текущего процесса.
Возвращает:
Новый объект Process для управления подпроцессом
Выбрасывает:
IOException — если возникает ошибка ввода-вывода
NullPointerException — если command равно null или один из элементов envp равен null
IllegalArgumentException — если command пуст
Начиная с версии:
1.3
См. также:
  • ProcessBuilder

exec

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

Это вспомогательный метод. Вызов вида exec(cmdarray) ведет себя в точности так же, как вызов exec(cmdarray, null, null).

Примечание по реализации:
В эталонной реализации можно включить ведение журнала созданного процесса; подробности см. в разделе ProcessBuilder.start().
Параметры:
cmdarray — массив, содержащий вызываемую команду и ее аргументы.
Возвращает:
Новый объект Process для управления подпроцессом
Выбрасывает:
IOException — если возникает ошибка ввода-вывода
NullPointerException — если cmdarray равно null или один из элементов cmdarray равен null
IndexOutOfBoundsException — если cmdarray является пустым массивом (имеет длину 0)
См. также:
  • ProcessBuilder

exec

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

Это вспомогательный метод. Вызов вида exec(cmdarray, envp) ведет себя в точности так же, как вызов exec(cmdarray, envp, null).

Примечание по реализации:
В эталонной реализации можно включить ведение журнала созданного процесса; подробности см. в разделе ProcessBuilder.start().
Параметры:
cmdarray — массив, содержащий вызываемую команду и ее аргументы.
envp — массив строк, каждый элемент которого содержит настройки переменных окружения в формате имя=значение, или null, если подпроцесс должен наследовать окружение текущего процесса.
Возвращает:
Новый объект Process для управления подпроцессом
Выбрасывает:
IOException — если возникает ошибка ввода-вывода
NullPointerException — если cmdarray равно null, один из элементов cmdarray равен null или один из элементов envp равен null
IndexOutOfBoundsException — если cmdarray является пустым массивом (имеет длину 0)
См. также:
  • ProcessBuilder

exec

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

Получив массив строк cmdarray, представляющий токены командной строки, и массив строк envp, представляющий настройки переменных «окружения», этот метод создает новый процесс для выполнения указанной команды.

Этот метод проверяет, что cmdarray является допустимой командой операционной системы. Набор допустимых команд зависит от системы, но как минимум команда должна представлять собой непустой список строк, не содержащих значений null.

Если envp равно null, подпроцесс наследует настройки окружения текущего процесса.

В некоторых операционных системах для запуска процесса может потребоваться минимальный набор зависящих от системы переменных окружения. В результате подпроцесс может наследовать дополнительные настройки переменных окружения помимо указанных в окружении. Минимальный набор зависящих от системы переменных окружения может переопределять значения, заданные в окружении.

Предпочтительным способом запуска процесса с измененным окружением теперь является ProcessBuilder.start().

Рабочий каталог нового подпроцесса задается параметром dir. Если dir равно null, подпроцесс наследует текущий рабочий каталог текущего процесса.

Запуск процесса операционной системы в значительной степени зависит от системы. Среди множества возможных проблем:

  • Не найден программный файл операционной системы.
  • Доступ к программному файлу запрещен.
  • Рабочий каталог не существует.

В таких случаях будет выброшено исключение. Точный тип исключения зависит от системы, но оно всегда будет подклассом IOException.

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

Примечание по реализации:
В эталонной реализации можно включить ведение журнала созданного процесса; подробности см. в разделе ProcessBuilder.start().
Параметры:
cmdarray — массив, содержащий вызываемую команду и ее аргументы.
envp — массив строк, каждый элемент которого содержит настройки переменных окружения в формате имя=значение, или null, если подпроцесс должен наследовать окружение текущего процесса.
dir — рабочий каталог подпроцесса или null, если подпроцесс должен наследовать рабочий каталог текущего процесса.
Возвращает:
Новый объект Process для управления подпроцессом
Выбрасывает:
UnsupportedOperationException — если операционная система не поддерживает создание процессов.
IOException — если возникает ошибка ввода-вывода
NullPointerException — если cmdarray равно null, один из элементов cmdarray равен null или один из элементов envp равен null
IndexOutOfBoundsException — если cmdarray является пустым массивом (имеет длину 0)
Начиная с версии:
1.3
См. также:
  • ProcessBuilder

availableProcessors

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

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

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

freeMemory

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

totalMemory

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

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

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

maxMemory

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

gc

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

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

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

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

runFinalization

@Deprecated(since="18", forRemoval=true) public void runFinalization()
Устарело, будет удалено: этот элемент API может быть удален в будущей версии.
Финализация признана устаревшей и будет удалена. Справочную информацию и сведения о вариантах миграции см. в разделе Object.finalize().

При работе в JVM, в которой финализация отключена или удалена, объектов, ожидающих финализации, не будет, поэтому этот метод ничего не делает.

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

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

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

См. Спецификацию языка Java:
12.6 Финализация экземпляров классов
См. также:
  • Object.finalize()

load

public void load(String filename)
load — это ограниченный метод платформы Java.
Программы могут использовать load только при включенном доступе к ограниченным методам.
Ограниченные методы небезопасны: при неправильном использовании они могут привести к аварийному завершению JVM или повреждению памяти.
Загружает нативную библиотеку, указанную в аргументе filename. Аргумент filename должен содержать абсолютное имя пути (например, Runtime.getRuntime().load("/home/avh/lib/libX11.so");). Если аргумент filename после удаления платформенного префикса библиотеки, пути и расширения файла указывает на библиотеку с именем, например, L, и нативная библиотека с именем L статически связана с виртуальной машиной, вызывается экспортированная библиотекой функция JNI_OnLoad_L вместо попытки загрузить динамическую библиотеку. Файл с именем, соответствующим аргументу, не обязательно должен существовать в файловой системе. Дополнительные сведения см. в спецификации JNI. В противном случае аргумент filename сопоставляется с образом нативной библиотеки способом, зависящим от реализации.

Этот метод похож на метод loadLibrary(String)RESTRICTED, но принимает в качестве аргумента произвольное имя файла, а не только имя библиотеки, что позволяет загружать любые файлы с нативным кодом.

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

Параметры:
filename — файл для загрузки.
Исключения:
UnsatisfiedLinkError — если имя файла не является абсолютным путем, нативная библиотека не связана статически с виртуальной машиной или библиотека не может быть сопоставлена с образом нативной библиотеки хост-системой.
NullPointerException — если filename имеет значение null
IllegalCallerException — если вызывающий код находится в модуле, для которого не включен доступ к нативному коду.
Внешние спецификации
  • Спецификация Java Native Interface
См. также:
  • getRuntime()

loadLibrary

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

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

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

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

Параметры:
libname — имя библиотеки.
Исключения:
UnsatisfiedLinkError — если аргумент libname содержит путь к файлу, нативная библиотека не связана статически с виртуальной машиной или библиотека не может быть сопоставлена с образом нативной библиотеки хост-системой.
NullPointerException — если libname имеет значение null
IllegalCallerException — если вызывающий код находится в модуле, для которого не включен доступ к нативному коду.
Внешние спецификации
  • Спецификация Java Native Interface

version

public static Runtime.Version version()
Возвращает версию среды выполнения Java в виде объекта Runtime.Version.
Возвращает:
объект Runtime.Version, представляющий версию среды выполнения Java
Начиная с версии:
9

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры основных понятий, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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.

Spec-Zone.ru

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