Spec-Zone.ru › OpenJDK 25

Интерфейс VirtualMachine

Все суперинтерфейсы:
Mirror
Все известные подинтерфейсы:
PathSearchingVirtualMachine
public interface VirtualMachine extends Mirror
Виртуальная машина, предназначенная для отладки. Точнее, mirror, представляющее составное состояние целевой виртуальной машины. Все остальные зеркала связаны с экземпляром этого интерфейса. Доступ ко всем остальным зеркалам осуществляется прямо или косвенно через экземпляр этого интерфейса. Доступ к глобальным свойствам виртуальной машины и управление выполнением виртуальной машины поддерживаются непосредственно этим интерфейсом.

Экземпляры этого интерфейса создаются экземплярами Connector. Например, AttachingConnector подключается к целевой виртуальной машине и возвращает её зеркало виртуальной машины. Обычно Connector создает VirtualMachine, вызывая метод VirtualMachineManager VirtualMachineManager.createVirtualMachine(Connection) createVirtualMachine(Connection).

Обратите внимание, что целевая виртуальная машина, запущенная коннектором запуска, не гарантированно будет стабильна до получения VMStartEvent.

Любой метод в VirtualMachine, принимающий VirtualMachine в качестве параметра, может вызвать VMDisconnectedException, если соединение с целевой виртуальной машиной разорвано и VMDisconnectEvent уже доступно для чтения из EventQueue или станет доступно.

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

С версии:
1.3

Краткое описание полей

Модификатор и тип Поле Описание
static final int TRACE_ALL
Трассировка полностью включена.
static final int TRACE_EVENTS
Трассировка включена для внутренней обработки событий.
static final int TRACE_NONE
Трассировка полностью отключена.
static final int TRACE_OBJREFS
Трассировка включена для внутреннего управления ссылками на объекты.
static final int TRACE_RECEIVES
Трассировка включена для пакетов JDWP, полученных от целевой виртуальной машины.
static final int TRACE_REFTYPES
Трассировка включена для внутреннего управления типами ссылок.
static final int TRACE_SENDS
Трассировка включена для пакетов JDWP, отправленных целевой виртуальной машине.

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

Модификатор и тип Метод Описание
List<ReferenceType> allClasses()
Возвращает все загруженные типы в целевой виртуальной машине.
default List<ModuleReference> allModules()
Возвращает все модули.
List<ThreadReference> allThreads()
Возвращает список активных потоков в целевой виртуальной машине.
boolean canAddMethod()
Устарело.
Бэкэнд JDWP на основе JVM TI никогда не установит для этой возможности значение true.
boolean canBeModified()
Определяет, доступна ли целевая виртуальная машина только для чтения.
boolean canForceEarlyReturn()
Определяет, поддерживает ли целевая виртуальная машина принудительное досрочное завершение метода.
boolean canGetBytecodes()
Определяет, поддерживает ли целевая виртуальная машина получение байт-кода метода.
boolean canGetClassFileVersion()
Определяет, поддерживает ли целевая виртуальная машина чтение старшей и младшей версий файла класса.
boolean canGetConstantPool()
Определяет, поддерживает ли целевая виртуальная машина получение сведений о пуле констант класса.
boolean canGetCurrentContendedMonitor()
Определяет, поддерживает ли целевая виртуальная машина получение монитора, которого в данный момент ожидает поток.
boolean canGetInstanceInfo()
Определяет, поддерживает ли целевая виртуальная машина доступ к экземплярам классов, подсчет экземпляров и получение ссылающихся на них объектов.
boolean canGetMethodReturnValues()
Определяет, поддерживает ли целевая виртуальная машина включение возвращаемых значений в события MethodExitEvent.
default boolean canGetModuleInfo()
Определяет, поддерживает ли целевая виртуальная машина получение сведений о модулях.
boolean canGetMonitorFrameInfo()
Определяет, поддерживает ли целевая виртуальная машина получение сведений о кадре, захватившем монитор.
boolean canGetMonitorInfo()
Определяет, поддерживает ли целевая виртуальная машина получение сведений о мониторах объекта.
boolean canGetOwnedMonitorInfo()
Определяет, поддерживает ли целевая виртуальная машина получение мониторов, которыми владеет поток.
boolean canGetSourceDebugExtension()
Определяет, поддерживает ли целевая виртуальная машина получение расширения отладочной информации об исходном коде.
boolean canGetSyntheticAttribute()
Определяет, поддерживает ли целевая виртуальная машина запрос синтетического атрибута метода или поля.
boolean canPopFrames()
Определяет, поддерживает ли целевая виртуальная машина извлечение кадров из стека потока.
boolean canRedefineClasses()
Определяет, поддерживает ли целевая виртуальная машина изменение классов на любом уровне.
boolean canRequestMonitorEvents()
Определяет, поддерживает ли целевая виртуальная машина создание объектов MonitorContendedEnterRequest.
boolean canRequestVMDeathEvent()
Определяет, поддерживает ли целевая виртуальная машина создание объектов VMDeathRequest.
boolean canUnrestrictedlyRedefineClasses()
Устарело.
Бэкэнд JDWP на основе JVM TI никогда не установит для этой возможности значение true.
boolean canUseInstanceFilters()
Определяет, поддерживает ли целевая виртуальная машина фильтрацию событий по конкретному объекту-экземпляру.
boolean canUseSourceNameFilters()
Определяет, поддерживает ли целевая виртуальная машина фильтрацию событий подготовки классов по имени исходного файла.
boolean canWatchFieldAccess()
Определяет, поддерживает ли целевая виртуальная машина точки наблюдения за доступом к полям.
boolean canWatchFieldModification()
Определяет, поддерживает ли целевая виртуальная машина точки наблюдения за изменением полей.
List<ReferenceType> classesByName(String className)
Возвращает загруженные типы ссылок, соответствующие указанному имени.
String description()
Возвращает текстовую информацию о целевой виртуальной машине и поддержке отладки, обеспечиваемой её зеркалом.
void dispose()
Делает это зеркало виртуальной машины недействительным.
EventQueue eventQueue()
Возвращает очередь событий для этой виртуальной машины.
EventRequestManager eventRequestManager()
Возвращает диспетчер запросов событий для этой виртуальной машины.
void exit(int exitCode)
Завершает работу зеркальной виртуальной машины с указанным кодом ошибки.
String getDefaultStratum()
Возвращает страты по умолчанию для этой виртуальной машины.
long[] instanceCounts(List<? extends ReferenceType> refTypes)
Возвращает количество экземпляров каждого ReferenceType в списке 'refTypes'.
BooleanValue mirrorOf(boolean value)
Создает BooleanValue для заданного значения.
ByteValue mirrorOf(byte value)
Создает ByteValue для заданного значения.
CharValue mirrorOf(char value)
Создает CharValue для заданного значения.
DoubleValue mirrorOf(double value)
Создает DoubleValue для заданного значения.
FloatValue mirrorOf(float value)
Создает FloatValue для заданного значения.
IntegerValue mirrorOf(int value)
Создает IntegerValue для заданного значения.
LongValue mirrorOf(long value)
Создает LongValue для заданного значения.
ShortValue mirrorOf(short value)
Создает ShortValue для заданного значения.
StringReference mirrorOf(String value)
Создает строку в этой виртуальной машине.
VoidValue mirrorOfVoid()
Создает VoidValue.
String name()
Возвращает имя целевой виртуальной машины, указанное в свойстве java.vm.name.
Process process()
Возвращает объект Process для этой виртуальной машины, если она была запущена с помощью LaunchingConnector
void redefineClasses(Map<? extends ReferenceType, byte[]> classToBytes)
Все указанные классы переопределяются в соответствии с предоставленными определениями.
void resume()
Продолжает выполнение приложения, работающего в этой виртуальной машине.
void setDebugTraceMode(int traceFlags)
Отслеживает действия, выполняемые реализацией com.sun.jdi.
void setDefaultStratum(String stratum)
Устанавливает страту по умолчанию для этой виртуальной машины (описание страт см. в разделе Location).
void suspend()
Приостанавливает выполнение приложения, работающего в этой виртуальной машине.
List<ThreadGroupReference> topLevelThreadGroups()
Возвращает все группы потоков, у которых нет родительской группы.
String version()
Возвращает версию среды выполнения Java в целевой виртуальной машине, указанную в свойстве java.version.

Методы, объявленные в интерфейсе Mirror

toString, virtualMachine

Подробное описание полей

TRACE_NONE

static final int TRACE_NONE
Трассировка отключена.
См. также:
  • Значения константных полей

TRACE_SENDS

static final int TRACE_SENDS
Включена трассировка пакетов JDWP, отправленных целевой виртуальной машине.
См. также:
  • Значения константных полей

TRACE_RECEIVES

static final int TRACE_RECEIVES
Включена трассировка пакетов JDWP, полученных от целевой виртуальной машины.
См. также:
  • Значения константных полей

TRACE_EVENTS

static final int TRACE_EVENTS
Включена трассировка внутренней обработки событий.
См. также:
  • Значения константных полей

TRACE_REFTYPES

static final int TRACE_REFTYPES
Включена трассировка внутреннего управления типами ссылок.
См. также:
  • Значения константных полей

TRACE_OBJREFS

static final int TRACE_OBJREFS
Включена трассировка внутреннего управления ссылками на объекты.
См. также:
  • Значения константных полей

TRACE_ALL

static final int TRACE_ALL
Трассировка включена полностью.
См. также:
  • Значения константных полей

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

allModules

default List<ModuleReference> allModules()
Возвращает все модули. Для каждого модуля целевой виртуальной машины в возвращаемый список будет добавлен объект ModuleReference.

Не все целевые виртуальные машины поддерживают эту операцию. Используйте canGetModuleInfo(), чтобы определить, поддерживается ли операция.

Требования к реализации:
Реализация по умолчанию выбрасывает UnsupportedOperationException.
Возвращает:
список объектов ModuleReference, каждый из которых представляет модуль целевой виртуальной машины.
Выбрасывает:
UnsupportedOperationException — если целевая виртуальная машина не поддерживает эту операцию.
С версии:
9

classesByName

List<ReferenceType> classesByName(String className)
Возвращает загруженные типы ссылок, соответствующие заданному имени. Имя должно быть полностью квалифицированным (например, java.lang.String). Возвращаемый список содержит объект ReferenceType для каждого найденного класса или интерфейса с заданным именем. Поиск выполняется только среди загруженных классов; попытки загрузить класс с заданным именем не предпринимаются.

Возвращаемый список включает типы ссылок, загруженные как минимум до этапа подготовки, а также типы (например, массивы), для которых подготовка не определена.

Параметры:
className — имя класса/интерфейса для поиска
Возвращает:
список объектов ReferenceType, каждый из которых представляет тип целевой виртуальной машины с заданным именем.

allClasses

List<ReferenceType> allClasses()
Возвращает все загруженные типы целевой виртуальной машины.

Возвращаемый список включает все типы ссылок, в том числе hidden classes or interfaces, загруженные как минимум до этапа подготовки, а также типы (например, массивы), для которых подготовка не определена.

Возвращает:
список объектов ReferenceType, каждый из которых представляет загруженный тип целевой виртуальной машины.
См. также:
  • JVM TI GetLoadedClasses — сведения о том, как может быть инициировано создание классов и интерфейсов

redefineClasses

void redefineClasses(Map<? extends ReferenceType, byte[]> classToBytes)
Все указанные классы переопределяются в соответствии с предоставленными определениями. Метод переопределенного класса называется «эквивалентным» (старой версии метода), если
  • его байт-код совпадает с байт-кодом старой версии, за исключением индексов в пуле констант, и
  • ссылочные константы равны.
В противном случае новый метод называется «неэквивалентным». Если у переопределенного метода есть активные кадры стека, они продолжают выполнять байт-код предыдущей версии метода. Если новая версия такого метода неэквивалентна, метод из одного из этих активных кадров называется «устаревшим», и вызов Method.isObsolete() для такого метода вернет true. Чтобы сбросить такой кадр, используйте ThreadReference.popFrames(StackFrame), чтобы удалить выполнение старого устаревшего метода из стека. Новые вызовы переопределенных методов всегда будут вызывать их новые версии.

Эта функция не вызывает никакой инициализации, кроме той, которая выполнялась бы в соответствии с обычной семантикой JVM. Иными словами, переопределение класса не приводит к запуску его инициализаторов. Значения существующих статических переменных останутся такими, какими они были до вызова. Однако полностью неинициализированным (новым) статическим переменным будет присвоено значение по умолчанию.

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

Приостанавливать потоки не требуется.

Эта функция не генерирует событий.

Все точки останова в переопределенных классах удаляются.

Не все целевые виртуальные машины поддерживают эту операцию. Используйте canRedefineClasses(), чтобы определить, поддерживается ли операция. Используйте canAddMethod(), чтобы определить, может ли переопределение добавлять методы. Используйте canUnrestrictedlyRedefineClasses(), чтобы определить, может ли переопределение изменять схему, удалять методы, изменять иерархию классов и т. д.

Параметры:
classToBytes — карта, сопоставляющая ReferenceType массиву байтов. Байты представляют новое определение класса и имеют формат файла класса виртуальной машины Java.
Выбрасывает:
UnsupportedOperationException — если целевая виртуальная машина не поддерживает эту операцию.
  • Если canRedefineClasses() имеет значение false, любой вызов этого метода выбросит это исключение.
  • Если canAddMethod() имеет значение false, попытка добавить метод выбросит это исключение.
  • Если canUnrestrictedlyRedefineClasses() имеет значение false, попытка внести любое из неподдерживаемых изменений файла класса, описанных в JVM TI RedefineClasses, выбросит это исключение.
NoClassDefFoundError — если байты не соответствуют типу ссылки (имена не совпадают).
VerifyError — если «верификатор» обнаружит, что класс, несмотря на корректную структуру, содержит внутреннюю несогласованность или проблему безопасности.
ClassFormatError — если байты не представляют допустимый класс.
ClassCircularityError — если при инициализации класса обнаружена циклическая зависимость.
UnsupportedClassVersionError — если виртуальная машина не поддерживает указанные в байтах старшую и младшую версии.
VMCannotBeModifiedException — если VirtualMachine доступна только для чтения — см. canBeModified().
С версии:
1.4
См. также:
  • Method.isObsolete()
  • ThreadReference.popFrames(StackFrame)
  • canRedefineClasses()
  • canAddMethod()
  • canUnrestrictedlyRedefineClasses()

allThreads

List<ThreadReference> allThreads()
Возвращает список работающих потоков целевой виртуальной машины. Потоки, которые еще не запущены или уже завершились, в список не включаются.

Возвращаемый список содержит объект ThreadReference для каждого работающего платформенного потока целевой виртуальной машины. Сюда входят платформенные потоки, созданные с помощью API java.lang.Thread, и все собственные потоки, присоединенные к целевой виртуальной машине с помощью кода JNI.

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

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

suspend

void suspend()
Приостанавливает выполнение приложения, работающего в этой виртуальной машине. Все выполняющиеся в данный момент потоки будут приостановлены.

Приостановки как виртуальной машины, так и отдельных потоков учитываются. Чтобы поток снова начал выполняться, его необходимо возобновить (с помощью resume() или ThreadReference.resume()) столько же раз, сколько он был приостановлен.

Выбрасывает:
VMCannotBeModifiedException — если VirtualMachine доступна только для чтения
См. также:
  • canBeModified()

resume

void resume()
Возобновляет выполнение приложения, работающего в этой виртуальной машине. Все потоки возобновляются в соответствии с описанием в ThreadReference.resume().
Выбрасывает:
VMCannotBeModifiedException — если VirtualMachine доступна только для чтения
См. также:
  • suspend()
  • canBeModified()

topLevelThreadGroups

List<ThreadGroupReference> topLevelThreadGroups()
Возвращает все группы потоков, у которых нет родительской группы. Для каждой группы потоков верхнего уровня в возвращаемый список добавляется объект ThreadGroupReference.

Эту команду можно использовать в качестве первого шага при построении дерева (или деревьев) существующих групп потоков.

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

eventQueue

EventQueue eventQueue()
Возвращает очередь событий этой виртуальной машины. У виртуальной машины есть только один объект EventQueue; этот метод возвращает один и тот же экземпляр при каждом вызове.
Возвращает:
EventQueue этой виртуальной машины.
Выбрасывает:
VMCannotBeModifiedException — если VirtualMachine доступна только для чтения — см. canBeModified().

eventRequestManager

EventRequestManager eventRequestManager()
Возвращает менеджер запросов событий этой виртуальной машины. EventRequestManager управляет событиями, настраиваемыми пользователем, например точками останова. У виртуальной машины есть только один объект EventRequestManager; этот метод возвращает один и тот же экземпляр при каждом вызове.
Возвращает:
EventRequestManager этой виртуальной машины.
Выбрасывает:
VMCannotBeModifiedException — если VirtualMachine доступна только для чтения — см. canBeModified().

mirrorOf

BooleanValue mirrorOf(boolean value)
Создает BooleanValue для заданного значения. Это значение можно использовать для присваивания и сравнения со значением, полученным из переменной или поля этой виртуальной машины.
Параметры:
value — логическое значение, для которого создается объект
Возвращает:
BooleanValue для заданного логического значения.

mirrorOf

ByteValue mirrorOf(byte value)
Создает ByteValue для заданного значения. Это значение можно использовать для присваивания и сравнения со значением, полученным из переменной или поля этой виртуальной машины.
Параметры:
value — значение типа byte, для которого создается объект
Возвращает:
ByteValue для заданного значения типа byte.

mirrorOf

CharValue mirrorOf(char value)
Создает CharValue для заданного значения. Это значение можно использовать для присваивания и сравнения со значением, полученным из переменной или поля этой виртуальной машины.
Параметры:
value — значение типа char, для которого создается объект
Возвращает:
CharValue для заданного значения типа char.

mirrorOf

ShortValue mirrorOf(short value)
Создает ShortValue для заданного значения. Это значение можно использовать для присваивания и сравнения со значением, полученным из переменной или поля этой виртуальной машины.
Параметры:
value — значение типа short, для которого создается объект
Возвращает:
ShortValue для заданного значения типа short.

mirrorOf

IntegerValue mirrorOf(int value)
Создает IntegerValue для заданного значения. Это значение можно использовать для присваивания и сравнения со значением, полученным из переменной или поля этой виртуальной машины.
Параметры:
value — значение типа int, для которого создается объект
Возвращает:
IntegerValue для заданного значения типа int.

mirrorOf

LongValue mirrorOf(long value)
Создает LongValue для заданного значения. Это значение можно использовать для присваивания и сравнения со значением, полученным из переменной или поля этой виртуальной машины.
Параметры:
value — значение типа long, для которого создается объект
Возвращает:
LongValue для заданного значения типа long.

mirrorOf

FloatValue mirrorOf(float value)
Создает FloatValue для заданного значения. Это значение можно использовать для присваивания и сравнения со значением, полученным из переменной или поля этой виртуальной машины.
Параметры:
value — значение типа float, для которого создается объект
Возвращает:
FloatValue для заданного значения типа float.

mirrorOf

DoubleValue mirrorOf(double value)
Создает DoubleValue для заданного значения. Это значение можно использовать для присваивания и сравнения со значением, полученным из переменной или поля этой виртуальной машины.
Параметры:
value — значение типа double, для которого создается объект
Возвращает:
DoubleValue для заданного значения типа double.

mirrorOf

StringReference mirrorOf(String value)
Создает строку в этой виртуальной машине. Созданную строку можно использовать для присваивания и сравнения со строковым значением, полученным из переменной или поля этой виртуальной машины.
Параметры:
value — строка, которую необходимо создать
Возвращает:
объект StringReference, представляющий вновь созданную строку в целевой виртуальной машине.
Выбрасывает:
VMCannotBeModifiedException — если VirtualMachine доступна только для чтения — см. canBeModified().

mirrorOfVoid

VoidValue mirrorOfVoid()
Создает VoidValue. Это значение можно передать в ThreadReference.forceEarlyReturn(Value), если необходимо выйти из метода void.
Возвращает:
VoidValue.

process

Process process()
Возвращает объект Process для этой виртуальной машины, если она была запущена с помощью LaunchingConnector
Возвращает:
объект Process для этой виртуальной машины или null, если она была запущена не с помощью LaunchingConnector.
Выбрасывает:
VMCannotBeModifiedException — если VirtualMachine доступна только для чтения — см. canBeModified().

dispose

void dispose()
Аннулирует зеркало этой виртуальной машины. Канал связи с целевой виртуальной машиной закрывается, и целевая виртуальная машина готовится принять следующее подключение от этого или другого отладчика, в том числе выполняются следующие действия:
  • Все запросы событий отменяются.
  • Все потоки, приостановленные с помощью suspend() или ThreadReference.suspend(), возобновляются столько раз, сколько необходимо для продолжения их выполнения.
  • Сборка мусора повторно включается во всех случаях, когда она была отключена с помощью ObjectReference.disableCollection().
Все текущие вызовы методов, выполняющиеся в целевой виртуальной машине, продолжаются после отключения. По завершении такого вызова метода вызвавший его поток продолжает выполнение с места, где он был первоначально остановлен.

Ресурсы, созданные в этой VirtualMachine (ObjectReferences, ReferenceTypes и т. д.), становятся недействительными.

exit

void exit(int exitCode)
Завершает работу зеркальной виртуальной машины с указанным кодом ошибки. Все ресурсы, связанные с этой VirtualMachine, освобождаются. Если зеркальная виртуальная машина удаленная, канал связи с ней закрывается. Ресурсы, созданные в этой VirtualMachine (ObjectReferences, ReferenceTypes и т. д.), становятся недействительными.

Потоки, выполняющиеся в зеркальной виртуальной машине, аварийно завершаются. Исключение о завершении потока не выбрасывается, а блоки finally не выполняются.

Параметры:
exitCode — код завершения целевой виртуальной машины. На некоторых платформах код завершения может быть усечен, например до младших 8 бит.
Выбрасывает:
VMCannotBeModifiedException — если VirtualMachine доступна только для чтения — см. canBeModified().

canWatchFieldModification

boolean canWatchFieldModification()
Определяет, поддерживает ли целевая виртуальная машина точки наблюдения за изменением полей.
Возвращает:
true, если эта функция поддерживается, и false в противном случае.

canWatchFieldAccess

boolean canWatchFieldAccess()
Определяет, поддерживает ли целевая виртуальная машина точки наблюдения за доступом к полям.
Возвращает:
true, если эта функция поддерживается, и false в противном случае.

canGetBytecodes

boolean canGetBytecodes()
Определяет, поддерживает ли целевая виртуальная машина получение байт-кода метода.
Возвращает:
true, если эта функция поддерживается, и false в противном случае.

canGetSyntheticAttribute

boolean canGetSyntheticAttribute()
Определяет, поддерживает ли целевая виртуальная машина запрос синтетического атрибута метода или поля.
Возвращает:
true, если эта функция поддерживается, и false в противном случае.

canGetOwnedMonitorInfo

boolean canGetOwnedMonitorInfo()
Определяет, поддерживает ли целевая виртуальная машина получение информации о мониторах, принадлежащих потоку.
Возвращает:
true, если эта функция поддерживается, и false в противном случае.

canGetCurrentContendedMonitor

boolean canGetCurrentContendedMonitor()
Определяет, поддерживает ли целевая виртуальная машина получение информации о мониторе, которого в данный момент ожидает поток.
Возвращает:
true, если эта функция поддерживается, и false в противном случае.

canGetMonitorInfo

boolean canGetMonitorInfo()
Определяет, поддерживает ли целевая виртуальная машина получение информации о мониторе объекта.
Возвращает:
true, если эта функция поддерживается, и false в противном случае.

canUseInstanceFilters

boolean canUseInstanceFilters()
Определяет, поддерживает ли целевая виртуальная машина фильтрацию событий по конкретному экземпляру объекта. Например, см. BreakpointRequest.addInstanceFilter(ObjectReference).
Возвращает:
true, если эта функция поддерживается, и false в противном случае.

canRedefineClasses

boolean canRedefineClasses()
Определяет, поддерживает ли целевая виртуальная машина переопределение классов на каком-либо уровне.
Возвращает:
true, если эта функция поддерживается, и false в противном случае.
С версии:
1.4
См. также:
  • redefineClasses(Map)

canAddMethod

@Deprecated(since="15") boolean canAddMethod()
Устарело.
Бэкэнд JDWP на основе JVM TI никогда не установит для этой возможности значение true.
Определяет, поддерживает ли целевая виртуальная машина добавление методов при переопределении классов.
Возвращает:
true, если эта функция поддерживается, и false в противном случае.
С версии:
1.4
См. также:
  • redefineClasses(Map)

canUnrestrictedlyRedefineClasses

@Deprecated(since="15") boolean canUnrestrictedlyRedefineClasses()
Устарело.
JDWP-бэкенд на основе JVM TI никогда не будет устанавливать эту возможность в значение true.
Определяет, поддерживает ли целевая виртуальная машина изменения при переопределении классов, которые в противном случае ограничены методом redefineClasses(Map).
Возвращает:
true, если функция поддерживается, и false в противном случае.
С версии:
1.4
См. также:
  • redefineClasses(Map)

canPopFrames

boolean canPopFrames()
Определяет, поддерживает ли целевая виртуальная машина удаление кадров из стека потока.
Возвращает:
true, если функция поддерживается, и false в противном случае.
С версии:
1.4
См. также:
  • ThreadReference.popFrames(StackFrame)

canGetSourceDebugExtension

boolean canGetSourceDebugExtension()
Определяет, поддерживает ли целевая виртуальная машина получение отладочного расширения исходного кода.
Возвращает:
true, если функция поддерживается, и false в противном случае.
С версии:
1.4
См. также:
  • ReferenceType.sourceDebugExtension()

canRequestVMDeathEvent

boolean canRequestVMDeathEvent()
Определяет, поддерживает ли целевая виртуальная машина создание объектов VMDeathRequest.
Возвращает:
true, если функция поддерживается, и false в противном случае.
С версии:
1.4
См. также:
  • EventRequestManager.createVMDeathRequest()

canGetMethodReturnValues

boolean canGetMethodReturnValues()
Определяет, поддерживает ли целевая виртуальная машина включение возвращаемых значений в объекты MethodExitEvent.
Возвращает:
true, если функция поддерживается, и false в противном случае.
С версии:
1.6
См. также:
  • EventRequestManager.createMethodExitRequest()

canGetInstanceInfo

boolean canGetInstanceInfo()
Определяет, поддерживает ли целевая виртуальная машина доступ к экземплярам классов, подсчёт экземпляров и получение ссылок на объекты.
Возвращает:
true, если функция поддерживается, и false в противном случае.
С версии:
1.6
См. также:
  • instanceCounts(List)
  • ReferenceType.instances(long)
  • ObjectReference.referringObjects(long)

canUseSourceNameFilters

boolean canUseSourceNameFilters()
Определяет, поддерживает ли целевая виртуальная машина фильтрацию событий подготовки классов по имени исходного файла.
Возвращает:
true, если функция поддерживается, и false в противном случае.
С версии:
1.6
См. также:
  • ClassPrepareRequest.addSourceNameFilter(String)

canForceEarlyReturn

boolean canForceEarlyReturn()
Определяет, поддерживает ли целевая виртуальная машина принудительный досрочный возврат из метода.
Возвращает:
true, если функция поддерживается, и false в противном случае.
С версии:
1.6
См. также:
  • ThreadReference.forceEarlyReturn(Value)

canBeModified

boolean canBeModified()
Определяет, является ли целевая виртуальная машина виртуальной машиной только для чтения. Если на виртуальной машине только для чтения вызывается метод, который изменяет её состояние, возникает исключение VMCannotBeModifiedException.
Возвращает:
true, если функция поддерживается, и false в противном случае.
С версии:
1.5

canRequestMonitorEvents

boolean canRequestMonitorEvents()
Определяет, поддерживает ли целевая виртуальная машина создание объектов MonitorContendedEnterRequest. MonitorContendedEnteredRequest. MonitorWaitRequest. MonitorWaitedRequest.
Возвращает:
true, если функция поддерживается, и false в противном случае.
С версии:
1.6
См. также:
  • EventRequestManager.createMonitorContendedEnterRequest()
  • EventRequestManager.createMonitorContendedEnteredRequest()
  • EventRequestManager.createMonitorWaitRequest()
  • EventRequestManager.createMonitorWaitedRequest()

canGetMonitorFrameInfo

boolean canGetMonitorFrameInfo()
Определяет, поддерживает ли целевая виртуальная машина получение сведений о том, какой кадр захватил монитор.
Возвращает:
true, если функция поддерживается, и false в противном случае.
С версии:
1.6
См. также:
  • ThreadReference.ownedMonitorsAndFrames()

canGetClassFileVersion

boolean canGetClassFileVersion()
Определяет, поддерживает ли целевая виртуальная машина чтение старшей и младшей версий файла класса.
Возвращает:
true, если функция поддерживается, и false в противном случае.
С версии:
1.6
См. также:
  • ReferenceType.majorVersion()
  • ReferenceType.minorVersion()

canGetConstantPool

boolean canGetConstantPool()
Определяет, поддерживает ли целевая виртуальная машина получение сведений о пуле констант класса.
Возвращает:
true, если функция поддерживается, и false в противном случае.
С версии:
1.6
См. также:
  • ReferenceType.constantPoolCount()
  • ReferenceType.constantPool()

canGetModuleInfo

default boolean canGetModuleInfo()
Определяет, поддерживает ли целевая виртуальная машина получение сведений о модулях.
Требования к реализации:
Реализация по умолчанию возвращает false.
Возвращает:
true, если функция поддерживается, и false в противном случае
С версии:
9
См. также:
  • allModules()
  • ReferenceType.module()
  • ModuleReference

setDefaultStratum

void setDefaultStratum(String stratum)
Задаёт слой по умолчанию для этой виртуальной машины (описание слоёв см. в Location). Переопределяет значение по умолчанию для каждого класса, заданное в файле класса.

Влияет на запросы местоположений (например, Location.sourceName()) и границы строк, используемые при пошаговом выполнении.

Параметры:
stratum — слой, который нужно задать в качестве слоя по умолчанию для виртуальной машины, или null, чтобы использовать значения по умолчанию для каждого класса.
Вызывает исключение:
UnsupportedOperationException — если целевая виртуальная машина не поддерживает эту операцию.
С версии:
1.4

getDefaultStratum

String getDefaultStratum()
Возвращает слой по умолчанию для этой виртуальной машины.
Возвращает:
null (это означает, что следует использовать значение по умолчанию для каждого класса — ReferenceType.defaultStratum()), если только слой по умолчанию не был задан методом setDefaultStratum(String).
С версии:
1.4
См. также:
  • setDefaultStratum(String)
  • ReferenceType.defaultStratum()

instanceCounts

long[] instanceCounts(List<? extends ReferenceType> refTypes)
Возвращает количество экземпляров каждого ReferenceType из списка «refTypes». Учитываются только экземпляры, достижимые для сборщика мусора.

Не все целевые виртуальные машины поддерживают эту операцию. Используйте canGetInstanceInfo(), чтобы определить, поддерживается ли операция.

Параметры:
refTypes — список объектов ReferenceType, для которых нужно получить количество экземпляров.
Возвращает:
массив long, содержащий по одному элементу для каждого элемента списка «refTypes». Элемент i массива содержит количество экземпляров ReferenceType, расположенного на позиции i в списке «refTypes», в целевой виртуальной машине. Если список «refTypes» пуст, возвращается массив нулевой длины. Если ReferenceType из списка refTypes был собран сборщиком мусора, для него возвращается нулевое количество экземпляров.
Вызывает исключение:
UnsupportedOperationException — если целевая виртуальная машина не поддерживает эту операцию — см. canGetInstanceInfo()
NullPointerException — если список «refTypes» имеет значение null.
С версии:
1.6
См. также:
  • ReferenceType.instances(long)
  • ObjectReference.referringObjects(long)

description

String description()
Возвращает текстовые сведения о целевой виртуальной машине и отладчике, который взаимодействует с ней. Формат этих сведений не гарантируется. Обычно эта строка содержит информацию о версиях целевой виртуальной машины и интерфейсов отладчика. Более точные сведения о версиях VM и JDI доступны через version(), VirtualMachineManager.majorInterfaceVersion() и VirtualMachineManager.minorInterfaceVersion()
Возвращает:
описание.

version

String version()
Возвращает версию среды выполнения Java в целевой виртуальной машине, указанную свойством java.version. Чтобы получить версию интерфейса JDI, используйте VirtualMachineManager.majorInterfaceVersion() и VirtualMachineManager.minorInterfaceVersion()
Возвращает:
версию целевой виртуальной машины.

name

String name()
Возвращает имя целевой виртуальной машины, указанное свойством java.vm.name.
Возвращает:
имя целевой виртуальной машины.

setDebugTraceMode

void setDebugTraceMode(int traceFlags)
Ведёт трассировку действий, выполняемых реализацией com.sun.jdi. Вся информация трассировки выводится в System.err. Переданные флаги трассировки ограничивают вывод только нужной информацией. Переданные флаги остаются в силе, а соответствующая трассировка продолжается до следующего вызова этого метода.

Вывод зависит от реализации, а режим трассировки может игнорироваться.

Параметры:
traceFlags — определяет, какие виды трассировки следует включить.

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её дочерних компаний в США и других странах.
Авторские права © 1993, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/jdk.jdi/com/sun/jdi/VirtualMachine.html

Spec-Zone.ru

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