Класс System
public final class System extends Object
System содержит несколько полезных полей и методов класса. Его нельзя создать. Среди возможностей, предоставляемых классом System, — потоки стандартного ввода, стандартного вывода и потоки вывода ошибок; доступ к внешним свойствам и переменным среды; возможность загрузки файлов и библиотек; а также утилитарный метод для быстрого копирования части массива.- С момента:
- 1.0
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static interface |
System.Logger |
System.Logger экземпляры регистрируют сообщения, которые будут направлены в базовую систему ведения журналов, которую использует LoggerFinder. |
static class |
System.LoggerFinder |
Служба LoggerFinder отвечает за создание, управление и конфигурирование регистраторов для базовой системы, которую она использует. |
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final PrintStream |
err |
Поток "стандартного" вывода ошибок. |
static final InputStream |
in |
Поток "стандартного" ввода. |
static final PrintStream |
out |
Поток "стандартного" вывода. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static void |
arraycopy |
Копирует массив из указанного исходного массива, начиная с указанной позиции, в указанную позицию целевого массива. |
static String |
clearProperty |
Удаляет системное свойство, указанное заданным ключом. |
static Console |
console() |
Возвращает уникальный объект Console, связанный с текущей виртуальной машиной Java, если таковой существует. |
static long |
currentTimeMillis() |
Возвращает текущее время в миллисекундах. |
static void |
exit |
Инициирует последовательность завершения завершения работы виртуальной машины Java. |
static void |
gc() |
Выполняет сборку мусора в виртуальной машине Java. |
static Map |
getenv() |
Возвращает немодифицируемый вид карты строк текущей системной среды. |
static String |
getenv |
Возвращает значение указанной переменной среды. |
static System.Logger |
getLogger |
Возвращает экземпляр Logger для использования вызывающим объектом. |
static System.Logger |
getLogger |
Возвращает локализуемый экземпляр Logger для использования вызывающим объектом. |
static Properties |
getProperties() |
Определяет текущие системные свойства. |
static String |
getProperty |
Возвращает системное свойство, указанное заданным ключом. |
static String |
getProperty |
Возвращает системное свойство, указанное заданным ключом. |
static SecurityManager |
getSecurityManager() |
Устаревший, для удаления: этот элемент API может быть удален в будущей версии. Этот метод полезен только в сочетании с менеджером безопасности, который устарел и может быть удален в будущей версии. |
static int |
identityHashCode |
Возвращает тот же код хэша для данного объекта, что и метод hashCode() по умолчанию, независимо от того, переопределяет ли класс данного объекта hashCode(). |
static Channel |
inheritedChannel() |
Возвращает канал, унаследованный от сущности, создавшей эту виртуальную машину Java. |
static String |
lineSeparator() |
Возвращает строку разделителя строк, зависящую от системы. |
static void |
load |
Загружает системную библиотеку, указанную аргументом filename. |
static void |
loadLibrary |
Загружает системную библиотеку, указанную аргументом libname. |
static String |
mapLibraryName |
Преобразует имя библиотеки в платформенно-специфическую строку, представляющую системную библиотеку. |
static long |
nanoTime() |
Возвращает текущее значение источника времени с высокой точностью текущей виртуальной машины Java в наносекундах. |
static void |
runFinalization() |
Устаревший, для удаления: этот элемент API может быть удален в будущей версии. Финализация устарела и будет удалена. |
static void |
setErr |
Переназначает поток "стандартного" вывода ошибок. |
static void |
setIn |
Переназначает поток "стандартного" ввода. |
static void |
setOut |
Переназначает поток "стандартного" вывода. |
static void |
setProperties |
Устанавливает системные свойства на аргумент Properties. |
static String |
setProperty |
Устанавливает системное свойство, указанное заданным ключом. |
static void |
setSecurityManager |
Устаревший, для удаления: этот элемент API может быть удален в будущей версии. Этот метод полезен только в сочетании с менеджером безопасности, который устарел и может быть удален в будущей версии. |
Подробное описание полей
in
public static final InputStream in
InputStreamReader, следует использовать Console.charset() для кодировки или рассмотреть использование Console.reader().- См. также:
out
public static final PrintStream out
Console.charset(), если Console существует, в противном случае - stdout.encoding. Для простых автономных приложений Java типичный способ записи строки выходных данных выглядит так:
System.out.println(data)
См. методы println в классе PrintStream.
- См. также:
err
public static final PrintStream err
Обычно этот поток соответствует выводу на экран или другому пункту назначения вывода, указанному средой или пользователем. По соглашению, этот поток вывода используется для отображения сообщений об ошибках или другой информации, которая должна быть немедленно обработана пользователем, даже если основной поток вывода, значение переменной out, был перенаправлен в файл или другое место, которое обычно не отслеживается непрерывно. Кодировка, используемая при преобразовании символов в байты, эквивалентна Console.charset(), если Console существует, в противном случае - stderr.encoding.
- См. также:
Подробное описание методов
setIn
public static void setIn(InputStream in)
checkPermission с разрешением RuntimePermission("setIO"), чтобы проверить, разрешено ли переназначение стандартного потока ввода.- Параметры:
-
in- новый стандартный поток ввода. - Исключения:
-
SecurityException- если менеджер безопасности существует и его методcheckPermissionне разрешает переназначение стандартного потока ввода. - С:
- 1.1
- См. также:
setOut
public static void setOut(PrintStream out)
checkPermission с разрешением RuntimePermission("setIO"), чтобы проверить, разрешено ли переназначение стандартного потока вывода.- Параметры:
-
out- новый стандартный поток вывода - Исключения:
-
SecurityException- если менеджер безопасности существует и его методcheckPermissionне разрешает переназначение стандартного потока вывода. - С:
- 1.1
- См. также:
setErr
public static void setErr(PrintStream err)
checkPermission с разрешением RuntimePermission("setIO"), чтобы проверить, разрешено ли переназначение стандартного потока вывода ошибок.- Параметры:
-
err- новый стандартный поток вывода ошибок. - Исключения:
-
SecurityException- если менеджер безопасности существует и его методcheckPermissionне разрешает переназначение стандартного потока вывода ошибок. - С:
- 1.1
- См. также:
console
public static Console console()
Console, связанный с текущей виртуальной машиной Java, если таковой имеется.- Возвращает:
- Системный консоль, если имеется, в противном случае
null. - С:
- 1.6
inheritedChannel
public static Channel inheritedChannel() throws IOException
inheritedChannel системного стандартного объекта SelectorProvider. Помимо сетевых каналов, описанных в inheritedChannel, этот метод может возвращать другие типы каналов в будущем.
- Возвращает:
- Унаследованный канал, если имеется, в противном случае
null. - Исключения:
-
IOException- Если происходит ошибка ввода-вывода -
SecurityException- Если присутствует менеджер безопасности и он не разрешает доступ к каналу. - С:
- 1.5
setSecurityManager
@Deprecated(since="17", forRemoval=true) public static void setSecurityManager(SecurityManager sm)
checkPermission с разрешением RuntimePermission("setSecurityManager"), чтобы убедиться, что замена существующего менеджера безопасности разрешена. Это может привести к исключению SecurityException. В противном случае, аргумент устанавливается в качестве текущего менеджера безопасности. Если аргумент null и менеджер безопасности не установлен, то никаких действий не выполняется, и метод просто возвращает.
- Примечание реализации:
- В реализации JDK, если виртуальная машина Java запускается со свойством системы
java.security.managerне установленным или установленным в специальный токен "disallow", то методsetSecurityManagerне может быть использован для установки менеджера безопасности. Дополнительные сведения см. в разделе спецификации классаSecurityManager. - Параметры:
-
sm- менеджер безопасности илиnull - Исключения:
-
SecurityException- если менеджер безопасности уже установлен и его методcheckPermissionне разрешает его замену -
UnsupportedOperationException- еслиsmне равен null и менеджер безопасности не разрешено устанавливать динамически - См. также:
getSecurityManager
@Deprecated(since="17", forRemoval=true) public static SecurityManager getSecurityManager()
- Returns:
- если для текущего приложения уже установлен менеджер безопасности, то возвращается этот менеджер; в противном случае возвращается
null. - See Also:
currentTimeMillis
public static long currentTimeMillis()
См. описание класса Date для обсуждения незначительных расхождений, которые могут возникнуть между «временем компьютера» и координированным всемирным временем (UTC).
- Returns:
- разность, измеренная в миллисекундах, между текущим временем и полуночью 1 января 1970 года по UTC.
- See Also:
nanoTime
public static long nanoTime()
Этот метод обеспечивает наносекундную точность, но не обязательно наносекундное разрешение (то есть, как часто изменяется значение) - не гарантируется ничего, кроме того, что разрешение не хуже, чем у currentTimeMillis().
Различия в последовательных вызовах, охватывающие более примерно 292 лет (263 наносекунд), не будут правильно вычислять прошедшее время из-за переполнения.
Значения, возвращаемые этим методом, становятся значимыми только при вычислении разницы между двумя такими значениями, полученными в рамках одного экземпляра виртуальной машины Java.
Например, для измерения того, сколько времени занимает выполнение некоторого кода:
long startTime = System.nanoTime();
// ... the code being measured ...
long elapsedNanos = System.nanoTime() - startTime; Для сравнения прошедшего времени с таймаутом используйте
if (System.nanoTime() - startTime >= timeoutNanos) ... вместо
if (System.nanoTime() >= startTime + timeoutNanos) ..., из-за возможности переполнения.- Returns:
- текущее значение источника времени с высокой точностью виртуальной машины Java, в наносекундах
- Since:
- 1.5
arraycopy
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
src, в целевой массив, на который ссылается dest. Количество скопированных элементов равно аргументу length. Элементы с позиций srcPos по srcPos+length-1 в исходном массиве копируются в позиции destPos по destPos+length-1 соответственно целевого массива. Если аргументы src и dest ссылаются на один и тот же объект массива, то копирование выполняется так, как если бы элементы с позиций srcPos по srcPos+length-1 были сначала скопированы во временный массив с length элементами, а затем содержимое временного массива было скопировано в позиции destPos по destPos+length-1 целевого массива.
Если dest равно null, то выбрасывается NullPointerException.
Если src равно null, то выбрасывается NullPointerException и целевой массив не изменяется.
В противном случае, если выполняется любое из следующих условий, выбрасывается ArrayStoreException и целевой массив не изменяется:
- Аргумент
srcссылается на объект, который не является массивом. - Аргумент
destссылается на объект, который не является массивом. - Аргументы
srcиdestссылаются на массивы с разными типами компонентных примитивных типов. - Аргумент
srcссылается на массив с примитивным типом компонента, а аргументdestссылается на массив со ссылочным типом компонента. - Аргумент
srcссылается на массив со ссылочным типом компонента, а аргументdestссылается на массив с примитивным типом компонента.
В противном случае, если выполняется любое из следующих условий, выбрасывается IndexOutOfBoundsException и целевой массив не изменяется:
- Аргумент
srcPosотрицательный. - Аргумент
destPosотрицательный. - Аргумент
lengthотрицательный. -
srcPos+lengthбольше, чемsrc.length, длина исходного массива. -
destPos+lengthбольше, чемdest.length, длина целевого массива.
В противном случае, если какой-либо фактический элемент исходного массива с позиции srcPos по srcPos+length-1 не может быть преобразован в тип компонента целевого массива путем присваивания, то выбрасывается ArrayStoreException. В этом случае пусть k будет наименьшим неотрицательным целым числом, меньшим длины, таким что src[srcPos+k] не может быть преобразовано в тип компонента целевого массива; когда исключение выбрасывается, элементы исходного массива с позиций srcPos по srcPos+k-1 уже будут скопированы в позиции целевого массива destPos по destPos+k-1, и другие позиции целевого массива не будут изменены. (Из-за уже упомянутых ограничений этот абзац фактически применяется только к ситуации, когда оба массива имеют типы компонентов, которые являются ссылочными типами.)
- Parameters:
-
src- исходный массив. -
srcPos- начальная позиция в исходном массиве. -
dest- целевой массив. -
destPos- начальная позиция в целевых данных. -
length- количество элементов массива для копирования. - Throws:
-
IndexOutOfBoundsException- если копирование приведет к обращению к данным за пределами границ массива. -
ArrayStoreException- если элемент в массивеsrcне может быть сохранен в массивdestиз-за несоответствия типов. -
NullPointerException- если либоsrc, либоdestравноnull.
identityHashCode
public static int identityHashCode(Object x)
- Parameters:
-
x- объект, для которого необходимо вычислить hashCode - Returns:
- hashCode
- Since:
- 1.1
- See Also:
getProperties
public static Properties getProperties()
checkPropertiesAccess без аргументов. Это может привести к исключению безопасности. Текущий набор системных свойств для использования методом getProperty(String) возвращается как объект Properties. Если текущего набора системных свойств нет, то сначала создается и инициализируется набор системных свойств. Этот набор системных свойств включает значение для каждого из следующих ключей, если только описание соответствующего значения не указывает, что значение является необязательным.
| Ключ | Описание связанного значения |
|---|---|
java.version | Версия Java Runtime Environment, которая может быть интерпретирована как Runtime.Version
|
java.version.date | Дата версии Java Runtime Environment в формате ISO-8601 ГГГГ-ММ-ДД, которая может быть интерпретирована как LocalDate
|
java.vendor | Производитель Java Runtime Environment |
java.vendor.url | URL производителя Java |
java.vendor.version | Версия производителя Java (необязательно) |
java.home | Директория установки Java |
java.vm.specification.version | Версия спецификации Java Virtual Machine, значение которой является элементом feature версии runtime |
java.vm.specification.vendor | Производитель спецификации Java Virtual Machine |
java.vm.specification.name | Название спецификации Java Virtual Machine |
java.vm.version | Версия реализации Java Virtual Machine, которая может быть интерпретирована как Runtime.Version
|
java.vm.vendor | Производитель реализации Java Virtual Machine |
java.vm.name | Название реализации Java Virtual Machine |
java.specification.version | Версия спецификации Java Runtime Environment, значение которой является элементом feature версии runtime |
java.specification.maintenance.version | Версия обслуживания спецификации Java Runtime Environment, может быть интерпретирована как положительное целое число (необязательно, см. ниже) |
java.specification.vendor | Производитель спецификации Java Runtime Environment |
java.specification.name | Название спецификации Java Runtime Environment |
java.class.version |
Последняя версия формата файлов Java-классов, распознаваемая Java Runtime как "MAJOR.MINOR", где MAJOR и MINOR отформатированы как десятичные целые числа |
java.class.path | Путь к классовой библиотеке Java (подробнее см. ClassLoader.getSystemClassLoader()) |
java.library.path | Список путей для поиска при загрузке библиотек |
java.io.tmpdir | Путь к временным файлам по умолчанию |
os.name | Имя операционной системы |
os.arch | Архитектура операционной системы |
os.version | Версия операционной системы |
file.separator | Разделитель файлов ("/" в UNIX) |
path.separator | Разделитель путей (":" в UNIX) |
line.separator | Разделитель строк ("\n" в UNIX) |
user.name | Имя учетной записи пользователя |
user.home | Домашняя директория пользователя |
user.dir | Текущая рабочая директория пользователя |
native.encoding | Имя кодировки символов, полученное из среды хоста и/или настроек пользователя. Установка этого системного свойства не имеет эффекта. |
stdout.encoding | Имя кодировки символов для System.out. Java Runtime может быть запущен с системным свойством, установленным в UTF-8, запуск с другим значением свойства приводит к неопределенному поведению. |
stderr.encoding | Имя кодировки символов для System.err. Java Runtime может быть запущен с системным свойством, установленным в UTF-8, запуск с другим значением свойства приводит к неопределенному поведению. |
Свойство java.specification.maintenance.version определено, если спецификация, реализованная этим runtime на момент его создания, подверглась релизу обслуживания. При определении значение указывает выпуск обслуживания. Для обозначения первого выпуска обслуживания значение свойства будет "1", для обозначения второго выпуска обслуживания – "2", и так далее.
Несколько путей в значении системного свойства разделены символом разделителя путей платформы.
Обратите внимание, что даже если менеджер безопасности не разрешает операцию getProperties, он может разрешить операцию getProperty(String).
- API Note:
-
Изменение стандартного системного свойства может привести к непредсказуемым результатам, если не указано иное. Значения свойств могут кешироваться во время инициализации или при первом использовании. Установка стандартного свойства после инициализации с помощью
getProperties(),setProperties(Properties),setProperty(String, String)илиclearProperty(String)может не дать желаемого эффекта. - Implementation Note:
- В дополнение к стандартным системным свойствам, системные свойства могут включать следующие ключи:
Ключ Описание связанного значения jdk.module.pathПуть к модулю приложения jdk.module.upgrade.pathПуть к модулю обновления jdk.module.mainИмя модуля по умолчанию/главного модуля jdk.module.main.classИмя главного класса начального модуля file.encodingНазвание кодировки по умолчанию, по умолчанию UTF-8. Свойство можно установить в командной строке со значениемUTF-8илиCOMPAT. Если оно установлено в командной строке со значениемCOMPAT, тогда значение заменяется значением свойстваnative.encodingво время запуска. Установка свойства в значение, отличное отUTF-8илиCOMPAT, приводит к неопределенному поведению. - Returns:
- системные свойства
- Throws:
-
SecurityException- если менеджер безопасности существует и его методcheckPropertiesAccessне разрешает доступ к системным свойствам. - See Also:
lineSeparator
public static String lineSeparator()
line.separator. В системах UNIX она возвращает "\n"; в системах Microsoft Windows — "\r\n".
- Returns:
- строку разделителя строк, зависящую от системы
- Since:
- 1.7
setProperties
public static void setProperties(Properties props)
Properties. Сначала, если есть менеджер безопасности, вызывается его метод checkPropertiesAccess без аргументов. Это может привести к исключению безопасности. Аргумент становится текущим набором системных свойств для использования методом getProperty(String). Если аргумент равен null, тогда текущий набор системных свойств забывается.
- API Note:
- Изменение стандартного системного свойства может привести к непредсказуемым результатам, если не указано иное. См. getProperties для получения подробностей.
- Parameters:
-
props- новые системные свойства. - Throws:
-
SecurityException- если менеджер безопасности существует и его методcheckPropertiesAccessне разрешает доступ к системным свойствам. - See Also:
getProperty
public static String getProperty(String key)
checkPropertyAccess с ключом в качестве аргумента. Это может привести к исключению SecurityException. Если в настоящее время нет набора системных свойств, набор системных свойств сначала создается и инициализируется так же, как и для метода getProperties.
- Примечание API:
- Изменение стандартной системной переменной может привести к непредсказуемым результатам, если не указано иное. См. getProperties для получения подробностей.
- Параметры:
-
key- имя системной переменной. - Возвращает:
- строковое значение системной переменной или
null, если переменной с указанным ключом нет. - Исключения:
-
SecurityException- если менеджер безопасности существует, и его методcheckPropertyAccessне разрешает доступ к указанной системной переменной. -
NullPointerException- еслиkeyявляетсяnull. -
IllegalArgumentException- еслиkeyпуста. - См. также:
getProperty
public static String getProperty(String key, String def)
checkPropertyAccess с key в качестве аргумента. Если в настоящее время нет набора системных свойств, набор системных свойств сначала создается и инициализируется так же, как и для метода getProperties.
- Параметры:
-
key- имя системной переменной. -
def- значение по умолчанию. - Возвращает:
- строковое значение системной переменной или значение по умолчанию, если переменной с указанным ключом нет.
- Исключения:
-
SecurityException- если менеджер безопасности существует, и его методcheckPropertyAccessне разрешает доступ к указанной системной переменной. -
NullPointerException- еслиkeyявляетсяnull. -
IllegalArgumentException- еслиkeyпуста. - См. также:
setProperty
public static String setProperty(String key, String value)
SecurityManager.checkPermission с разрешением PropertyPermission(key, "write"). Это может привести к исключению SecurityException. Если исключение не произошло, указанное свойство устанавливается в заданное значение.- Примечание API:
- Изменение стандартной системной переменной может привести к непредсказуемым результатам, если не указано иное. См. getProperties для получения подробностей.
- Параметры:
-
key- имя системной переменной. -
value- значение системной переменной. - Возвращает:
- предыдущее значение системной переменной или
null, если его не было. - Исключения:
-
SecurityException- если менеджер безопасности существует, и его методcheckPermissionне разрешает установить указанное свойство. -
NullPointerException- еслиkeyилиvalueпусто. -
IllegalArgumentException- еслиkeyпусто. - С:
- 1.2
- См. также:
clearProperty
public static String clearProperty(String key)
SecurityManager.checkPermission с разрешением PropertyPermission(key, "write"). Это может привести к исключению SecurityException. Если исключение не произошло, указанное свойство удаляется.- Примечание API:
- Изменение стандартной системной переменной может привести к непредсказуемым результатам, если не указано иное. См. метод getProperties для получения подробностей.
- Параметры:
-
key- имя системной переменной, которую нужно удалить. - Возвращает:
- предыдущее строковое значение системной переменной или
null, если переменной с указанным ключом нет. - Исключения:
-
SecurityException- если менеджер безопасности существует, и его методcheckPropertyAccessне разрешает доступ к указанной системной переменной. -
NullPointerException- еслиkeyявляетсяnull. -
IllegalArgumentException- еслиkeyпусто. - С:
- 1.5
- См. также:
getenv
public static String getenv(String name)
Если менеджер безопасности существует, вызывается его метод checkPermission с разрешением RuntimePermission("getenv."+name). Это может привести к исключению SecurityException. Если исключение не произошло, возвращается значение переменной name.
Системные свойства и переменные среды — это концептуально отображения между именами и значениями. Оба механизма могут использоваться для передачи пользовательской информации в процесс Java. Переменные среды имеют более глобальное воздействие, поскольку они видны для всех потомков процесса, который их определяет, а не только для непосредственного подпроцесса Java. У них могут быть немного разные семантики, например, чувствительность к регистру, в разных операционных системах. По этим причинам переменные среды чаще всего имеют непреднамеренные побочные эффекты. Лучше использовать системные свойства, где это возможно. Переменные среды следует использовать, когда требуется глобальное воздействие или когда внешний интерфейс системы требует переменной среды (например, PATH).
В системах UNIX регистр букв name обычно имеет значение, а в системах Microsoft Windows обычно нет. Например, выражение System.getenv("FOO").equals(System.getenv("foo")), скорее всего, будет истинным в системах Microsoft Windows.
- Параметры:
-
name- имя переменной среды - Возвращает:
- строковое значение переменной или
null, если переменная не определена в системной среде - Исключения:
-
NullPointerException- еслиnameявляетсяnull. -
SecurityException- если менеджер безопасности существует, и его методcheckPermissionне разрешает доступ к переменной средыname. - См. также:
getenv
public static Map<String,String> getenv()
Если система не поддерживает переменные среды, возвращается пустая карта.
Возвращаемая карта никогда не будет содержать null-ключи или null-значения. Попытка запросить наличие null-ключа или null-значения вызовет исключение NullPointerException. Попытка запросить наличие ключа или значения, которые не являются типа String, вызовет исключение ClassCastException.
Возвращаемая карта и её представления коллекций могут не следовать общему соглашению методов Object.equals(java.lang.Object) и Object.hashCode().
Возвращаемая карта, как правило, чувствительна к регистру на всех платформах.
Если существует менеджер безопасности, его метод checkPermission вызывается с разрешением RuntimePermission("getenv.*"). Это может привести к выбросу исключения SecurityException.
При передаче информации дочернему Java-процессу, обычно предпочтительнее использовать системные свойства, а не переменные среды.
- Возвращает:
- среду в виде карты имён переменных и их значений
- Исключение:
-
SecurityException- если менеджер безопасности существует и его методcheckPermissionне позволяет получить доступ к среде процесса - С:
- 1.5
- См. также:
getLogger
public static System.Logger getLogger(String name)
Logger для использования вызывающим кодом.- Примечание API:
- Этот метод может отложить вызов метода
LoggerFinder.getLoggerдля создания фактического логгера, предоставляемого механизмом логгирования, например, чтобы позволить получить логгеры во время инициализации системы. - Требования к реализации:
- Экземпляры, возвращаемые этим методом, перенаправляют сообщения на логгеры, полученные путём вызова
LoggerFinder.getLogger(name, module), гдеmodule— модуль вызывающего кода. В случаях, когдаSystem.getLoggerвызывается из контекста, где нет кадра вызывающего кода в стеке (например, при вызове непосредственно из присоединённого к JNI потока), выбрасываетсяIllegalCallerException. Чтобы получить логгер в таком контексте, используйте вспомогательный класс, который будет неявно идентифицирован как вызывающий код, или используйте системныйLoggerFinderдля получения логгера. Обратите внимание, что в последнем случае логгирование может быть инициализировано немедленно. - Параметры:
-
name— имя логгера. - Возвращает:
- экземпляр
System.Logger, который может использоваться вызывающим классом. - Исключение:
-
NullPointerException- еслиnameявляетсяnull. -
IllegalCallerException- если в стеке нет кадра вызова Java. - С:
- 9
getLogger
public static System.Logger getLogger(String name, ResourceBundle bundle)
Logger для использования вызывающим кодом. Возвращаемый логгер будет использовать предоставленный ресурсный пул для локализации сообщений.- Примечание API:
- Этот метод предназначен для использования после полной инициализации системы. Этот метод может запустить немедленную загрузку и инициализацию сервиса
System.LoggerFinder, что может вызвать проблемы, если Java Runtime ещё не готов для инициализации конкретной реализации сервиса. Системные классы, которые могут загружаться на ранних этапах запуска и нуждаются в локализованных сообщениях, должны создавать логгер с помощьюgetLogger(java.lang.String), а затем использовать методы логгирования, принимающие ресурсный пул в качестве параметра. - Требования к реализации:
- Возвращаемый логгер будет выполнять локализация сообщений в соответствии с
LoggerFinder.getLocalizedLogger(name, bundle, module), гдеmodule— модуль вызывающего кода. В случаях, когдаSystem.getLoggerвызывается из контекста, где нет кадра вызывающего кода в стеке (например, при вызове непосредственно из присоединённого к JNI потока), выбрасываетсяIllegalCallerException. Чтобы получить логгер в таком контексте, используйте вспомогательный класс, который будет неявно идентифицирован как вызывающий код, или используйте системныйLoggerFinderдля получения логгера. Обратите внимание, что в последнем случае логгирование может быть инициализировано немедленно. - Параметры:
-
name- имя логгера. -
bundle- ресурсный пул. - Возвращает:
- экземпляр
System.Logger, который будет использовать предоставленный ресурсный пул для локализации сообщений. - Исключение:
-
NullPointerException- еслиnameявляетсяnullилиbundleявляетсяnull. -
IllegalCallerException- если в стеке нет кадра вызова Java. - С:
- 9
exit
public static void exit(int status)
Аргумент служит в качестве кода состояния. По соглашению, ненулевой код состояния указывает на аварийное завершение.
Вызов System.exit(n) фактически эквивалентен вызову:
Runtime.getRuntime().exit(n)
- Примечание реализации:
- Инициализация последовательности завершения записывается в журнал с помощью
Runtime.exit(int). - Параметры:
-
status- код состояния завершения. - Исключение:
-
SecurityException- если менеджер безопасности существует и его методcheckExitне разрешает завершение работы со указанным кодом состояния. - См. также:
gc
public static void gc()
Вызов метода gc подразумевает, что Java Virtual Machine потратит ресурсы на переработку неиспользуемых объектов, чтобы сделать занимаемую ими память доступной для повторного использования. При возвращении из метода вызова, Java Virtual Machine предпримет наилучшие усилия для освобождения места от всех неиспользуемых объектов. Нет гарантии, что эти усилия приведут к переработке любого определённого количества неиспользуемых объектов, освобождению любого определённого объёма памяти или завершению в любой определённый момент, если вообще завершатся, до возвращения или после него. Нет также гарантии, что эти усилия определят изменение достижимости любого определённого количества объектов, или что любое определённое количество объектов Reference будет очищено и помещено в очередь.
Вызов System.gc() фактически эквивалентен вызову:
Runtime.getRuntime().gc()
- См. также:
runFinalization
@Deprecated(since="18", forRemoval=true) public static void runFinalization()
Object.finalize() для получения дополнительной информации и деталей по вариантам миграции. При выполнении в JVM, в которой финализация отключена или удалена, никакие объекты не будут ожидать финализации, поэтому этот метод ничего не делает.
finalize объектов, которые были признаны удалёнными, но чьи методы finalize ещё не были выполнены. При возвращении из метода вызова, Java Virtual Machine приложит все усилия для завершения всех невыполненных финализаций. Вызов System.runFinalization() фактически эквивалентен вызову:
Runtime.getRuntime().runFinalization()
- См. Спецификацию языка Java:
- 12.6 Finalization of Class Instances
- См. также:
load
public static void load(String filename)
Вызов System.load(name) фактически эквивалентен вызову:
Runtime.getRuntime().load(name)
- Parameters:
-
filename- загружаемый файл. - Throws:
-
SecurityException- если менеджер безопасности существует и его методcheckLinkне разрешает загрузку указанной динамической библиотеки -
UnsatisfiedLinkError- если имя файла не является абсолютным путём, системная библиотека не статически связана с виртуальной машиной или библиотека не может быть отображена на изображение системной библиотеки хост-системой. -
NullPointerException- еслиfilenameявляетсяnull - Внешние спецификации
- См. также:
loadLibrary
public static void loadLibrary(String libname)
libname статически связана с виртуальной машиной, то вызывается функция JNI_OnLoad_libname экспортируемая библиотекой. Для получения более подробной информации см. Спецификацию JNI. В противном случае аргумент libname загружается из системного расположения библиотек и отображается на изображение системной библиотеки зависящим от реализации способом. Вызов System.loadLibrary(name) фактически эквивалентен вызову
Runtime.getRuntime().loadLibrary(name)
- Parameters:
-
libname- имя библиотеки. - Throws:
-
SecurityException- если менеджер безопасности существует и его методcheckLinkне разрешает загрузку указанной динамической библиотеки -
UnsatisfiedLinkError- если аргумент libname содержит путь к файлу, системная библиотека не статически связана с виртуальной машиной или библиотека не может быть отображена на изображение системной библиотеки хост-системой. -
NullPointerException- еслиlibnameявляетсяnull - Внешние спецификации
- См. также:
mapLibraryName
public static String mapLibraryName(String libname)
- Parameters:
-
libname- имя библиотеки. - Returns:
- имя системной библиотеки, зависящее от платформы.
- Throws:
-
NullPointerException- еслиlibnameявляетсяnull - Since:
- 1.2
- См. также:
© 1993, 2023, 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/21/docs/api/java.base/java/lang/System.html