-
- All Superinterfaces:
-
Mirror
- All Known Subinterfaces:
-
PathSearchingVirtualMachine
public interface VirtualMachineextends Mirror
一个针对调试的虚拟机。 更确切地说,mirror
表示目标VM的复合状态。 所有其他镜像都与此接口的实例相关联。 可以通过此接口的实例直接或间接访问所有其他镜像。 此接口直接支持访问全局VM属性和控制VM执行。此接口的实例由
Connector
的实例创建。 例如,AttachingConnector
附加到目标VM并返回其虚拟机镜像。 连接器通常通过调用VirtualMachineManager的VirtualMachineManager.createVirtualMachine(Connection)
createVirtualMachine(连接)方法来创建VirtualMachine。请注意,在收到
VMStartEvent
之后,启动连接器启动的目标VM无法保证稳定。上的任何方法
VirtualMachine
这需要VirtualMachine
作为参数可能抛出VMDisconnectedException
如果目标VM断开且VMDisconnectEvent
从所读出的已被或可EventQueue
。如果目标VM内存
VirtualMachine
,则VirtualMachine
上的任何方法(如果参数为VirtualMachine)可能会抛出VMOutOfMemoryException
。- 从以下版本开始:
- 1.3
-
-
字段汇总
字段 变量和类型 字段 描述 static int
TRACE_ALL
所有跟踪都已启用。static int
TRACE_EVENTS
跟踪已启用内部事件处理。static int
TRACE_NONE
所有跟踪都被禁用。static int
TRACE_OBJREFS
跟踪启用了对象引用的内部管理。static int
TRACE_RECEIVES
对从目标VM接收的JDWP数据包启用跟踪。static int
TRACE_REFTYPES
跟踪启用了引用类型的内部管理。static int
TRACE_SENDS
对发送到目标VM的JDWP数据包启用跟踪。
-
方法摘要
所有方法 实例方法 抽象方法 Default Methods 变量和类型 方法 描述 List<ReferenceType>
allClasses()
返回所有加载的类型。default List<ModuleReference>
allModules()
返回所有模块。List<ThreadReference>
allThreads()
返回当前正在运行的线程的列表。boolean
canAddMethod()
确定目标VM在执行类重新定义时是否支持添加方法。boolean
canBeModified()
确定目标VM是否为只读VM。boolean
canForceEarlyReturn()
确定目标VM是否支持强制方法提前返回。boolean
canGetBytecodes()
确定目标VM是否支持检索方法的字节码。boolean
canGetClassFileVersion()
确定目标VM是否支持读取类文件主要版本和次要版本。boolean
canGetConstantPool()
确定目标VM是否支持获取类的常量池信息。boolean
canGetCurrentContendedMonitor()
确定目标VM是否支持检索线程当前正在等待的监视器。boolean
canGetInstanceInfo()
确定目标VM是否支持访问类实例,实例计数和引用对象。boolean
canGetMethodReturnValues()
确定目标VM是否支持在MethodExitEvent
中包含返回值。default boolean
canGetModuleInfo()
确定目标VM是否支持获取有关模块的信息。boolean
canGetMonitorFrameInfo()
确定目标VM是否支持获取已获取监视器的帧。boolean
canGetMonitorInfo()
确定目标VM是否支持检索对象的监视器信息。boolean
canGetOwnedMonitorInfo()
确定目标VM是否支持检索线程拥有的监视器。boolean
canGetSourceDebugExtension()
确定目标VM是否支持获取源调试扩展。boolean
canGetSyntheticAttribute()
确定目标VM是否支持查询方法或字段的合成属性。boolean
canPopFrames()
确定目标VM是否支持弹出线程堆栈的帧。boolean
canRedefineClasses()
确定目标VM是否支持任何级别的类重新定义。boolean
canRequestMonitorEvents()
确定目标VM是否支持创建MonitorContendedEnterRequest
。boolean
canRequestVMDeathEvent()
确定目标VM是否支持创建VMDeathRequest
。boolean
canUnrestrictedlyRedefineClasses()
确定目标VM在执行类重新定义时是否支持更改,否则将受到redefineClasses(java.util.Map<? extends com.sun.jdi.ReferenceType, byte[]>)
的限制。boolean
canUseInstanceFilters()
确定目标VM是否支持按特定实例对象过滤事件。boolean
canUseSourceNameFilters()
确定目标VM是否支持按源名称过滤类准备事件。boolean
canWatchFieldAccess()
确定目标VM是否支持用于字段访问的观察点。boolean
canWatchFieldModification()
确定目标VM是否支持用于字段修改的观察点。List<ReferenceType>
classesByName(String className)
返回与给定名称匹配的已加载引用类型。String
description()
返回目标VM上的文本信息以及镜像它的调试器支持。void
dispose()
使此虚拟机镜像无效。EventQueue
eventQueue()
返回此虚拟机的事件队列。EventRequestManager
eventRequestManager()
返回此虚拟机的事件请求管理器。void
exit(int exitCode)
使镜像的VM以给定的错误代码终止。String
getDefaultStratum()
返回此VM的默认层。long[]
instanceCounts(List<? extends ReferenceType> refTypes)
返回'refTypes'列表中每个ReferenceType的实例数。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
报告的目标VM的名称。Process
process()
如果由LaunchingConnector
启动,则返回此虚拟机的Process
对象void
redefineClasses(Map<? extends ReferenceType,byte[]> classToBytes)
根据提供的定义重新定义给出的所有类。void
resume()
继续执行在此虚拟机中运行的应用程序。void
setDebugTraceMode(int traceFlags)
跟踪com.sun.jdi实现执行的活动。void
setDefaultStratum(String stratum)
设置此VM的默认层(有关层的讨论,请参阅Location
)。void
suspend()
暂停执行在此虚拟机中运行的应用程序。List<ThreadGroupReference>
topLevelThreadGroups()
返回没有父级的每个线程组。String
version()
返回属性java.version
报告的目标VM中Java Runtime Environment的版本。-
声明方法的接口 com.sun.jdi.Mirror
toString, virtualMachine
-
-
-
-
字段详细信息
-
TRACE_NONE
static final int TRACE_NONE
所有跟踪都被禁用。- 另请参见:
- 常数字段值
-
TRACE_SENDS
static final int TRACE_SENDS
对发送到目标VM的JDWP数据包启用跟踪。- 另请参见:
- 常数字段值
-
TRACE_RECEIVES
static final int TRACE_RECEIVES
对从目标VM接收的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()
- 实现要求:
- 默认实现抛出
UnsupportedOperationException
。 - 结果
-
ModuleReference
对象的列表,每个对象镜像目标VM中的模块。 - 异常
-
UnsupportedOperationException
- 如果目标虚拟机不支持此操作。 - 从以下版本开始:
- 9
-
classesByName
List<ReferenceType> classesByName(String className)
返回与给定名称匹配的已加载引用类型。 名称必须是完全限定的(例如,java.lang.String)。 对于使用给定名称找到的每个类或接口,返回的列表将包含ReferenceType
。 搜索仅限于加载的类; 没有尝试加载给定名称的类。返回的列表将包括至少加载到准备点的引用类型和未定义准备的类型(如数组)。
- 参数
-
className
- 要搜索的类/接口名称 - 结果
- 一个
ReferenceType
对象的列表,每个对象镜像一个具有给定名称的目标VM中的类型。
-
allClasses
List<ReferenceType> allClasses()
返回所有加载的类型。 对于目标VM中的每个加载类型,ReferenceType
将放置在返回的列表中。 该列表将包括镜像类,接口和数组类型的ReferenceTypes。返回的列表将包括至少加载到准备点的引用类型和未定义准备的类型(如数组)。
- 结果
-
ReferenceType
对象的列表,每个对象镜像目标VM中的加载类型。
-
redefineClasses
void redefineClasses(Map<? extends ReferenceType,byte[]> classToBytes)
根据提供的定义重新定义给出的所有类。 重新定义的类中的方法称为“等效”(对于方法的旧版本)if- 它们的字节码是相同的,除了对常量池的指示,和
- 引用的常量是相等的。
Method.isObsolete()
将返回true。 如果需要重置这样的帧,请使用ThreadReference.popFrames(StackFrame)
从堆栈中弹出旧的过时方法执行。 重新定义的方法的新调用将始终调用新版本。除了在常规JVM语义下会发生的情况之外,此函数不会导致任何初始化。 换句话说,重新定义类不会导致其初始化器运行。 预先存在的静态变量的值将保持与调用之前一样。 但是,完全未初始化的(新)静态变量将被赋予其默认值。
如果重新定义的类具有实例,那么所有这些实例将在调用完成时具有由重新定义的类定义的字段。 预先存在的字段将保留其先前的值。 任何新字段都将具有其默认值; 没有运行实例初始化程序或构造函数。
线程不需要暂停。
此功能不会生成任何事件。
重新定义的类中的所有断点都将被删除。
并非所有目标虚拟机都支持此操作。 使用
canRedefineClasses()
确定是否支持该操作。 使用canAddMethod()
确定重定义是否可以添加方法。 使用canUnrestrictedlyRedefineClasses()
确定重定义是否可以更改模式,删除方法,更改类层次结构等。- 参数
-
classToBytes
- 从ReferenceType
到字节数组的映射。 字节表示新的类定义,并且采用Java虚拟机类文件格式。 - 异常
-
UnsupportedOperationException
- 如果目标虚拟机不支持此操作。- 如果
canRedefineClasses()
为false,则此方法的任何调用都将抛出此异常。 - 如果
canAddMethod()
为false,则尝试添加方法将抛出此异常。 - 如果
canUnrestrictedlyRedefineClasses()
为false,则尝试以下任何操作都将引发此异常- 更改架构(字段)
- 更改层次结构(超类,接口)
- 删除方法
- 改变类修饰符
- 改变方法修饰语
- 更改
NestHost
或NestMembers
类属性
- 如果
-
NoClassDefFoundError
- 如果字节与引用类型不对应(名称不匹配)。 -
VerifyError
- 如果“验证者”检测到类虽然格式良好,但包含内部不一致或安全问题。 -
ClassFormatError
- 如果字节不表示有效类。 -
ClassCircularityError
- 如果在初始化类时检测到圆形度。 -
UnsupportedClassVersionError
- 如果VM不支持主要和次要版本号(以字节为单位)。 -
VMCannotBeModifiedException
- 如果VirtualMachine是只读的 - 请参阅canBeModified()
。 - 从以下版本开始:
- 1.4
- 另请参见:
-
Method.isObsolete()
,ThreadReference.popFrames(com.sun.jdi.StackFrame)
,canRedefineClasses()
,canAddMethod()
,canUnrestrictedlyRedefineClasses()
-
allThreads
List<ThreadReference> allThreads()
返回当前正在运行的线程的列表。 对于目标VM中的每个正在运行的线程,将镜像它的ThreadReference
放在列表中。 返回的列表包含通过java.lang.Thread创建的线程,通过JNI连接到目标VM的所有本机线程,以及目标VM创建的系统线程。 尚未启动的线程对象(请参阅Thread.start()
)和已完成执行的线程对象未包含在返回的列表中。- 结果
- 一个
ThreadReference
对象的列表,一个对应于镜像VM中的每个正在运行的线程。
-
suspend
void suspend()
暂停执行在此虚拟机中运行的应用程序。 当前正在运行的所有线程都将被暂停与
Thread.suspend()
不同,计算虚拟机和单个线程的挂起。 在线程再次运行之前,它必须恢复(通过resume()
或ThreadReference.resume()
)与其被挂起的次数相同。- 异常
-
VMCannotBeModifiedException
- 如果VirtualMachine是只读的 - 请参阅canBeModified()
。
-
resume
void resume()
继续执行在此虚拟机中运行的应用程序。 所有线程都恢复,如ThreadReference.resume()
中所述 。- 异常
-
VMCannotBeModifiedException
- 如果VirtualMachine是只读的 - 请参阅canBeModified()
。 - 另请参见:
-
suspend()
-
topLevelThreadGroups
List<ThreadGroupReference> topLevelThreadGroups()
- 结果
- 一个
ThreadGroupReference
对象的列表,每个顶级线程组一个。
-
eventQueue
EventQueue eventQueue()
返回此虚拟机的事件队列。 虚拟机只有一个EventQueue
对象,此方法每次调用时都将返回相同的实例。- 结果
- 这个虚拟机的
EventQueue
。 - 异常
-
VMCannotBeModifiedException
- 如果VirtualMachine是只读的 - 请参阅canBeModified()
。
-
eventRequestManager
EventRequestManager eventRequestManager()
- 结果
- 这个虚拟机的
EventRequestManager
。 - 异常
-
VMCannotBeModifiedException
- 如果VirtualMachine是只读的 - 请参阅canBeModified()
。
-
mirrorOf
BooleanValue mirrorOf(boolean value)
为给定值创建BooleanValue
。 此值可用于设置和比较从此虚拟机中的变量或字段检索的值。- 参数
-
value
- 要为其创建值的布尔值 - 结果
- 给定布尔值的
BooleanValue
。
-
mirrorOf
ByteValue mirrorOf(byte value)
为给定值创建ByteValue
。 此值可用于设置和比较从此虚拟机中的变量或字段检索的值。- 参数
-
value
- 要为其创建值的字节 - 结果
- 给定字节的
ByteValue
。
-
mirrorOf
CharValue mirrorOf(char value)
为给定值创建CharValue
。 此值可用于设置和比较从此虚拟机中的变量或字段检索的值。- 参数
-
value
- 要为其创建值的char - 结果
- 给定char的
CharValue
。
-
mirrorOf
ShortValue mirrorOf(short value)
为给定值创建ShortValue
。 此值可用于设置和比较从此虚拟机中的变量或字段检索的值。- 参数
-
value
- 创建值的缩写 - 结果
- 给定的短期
ShortValue
。
-
mirrorOf
IntegerValue mirrorOf(int value)
为给定值创建IntegerValue
。 此值可用于设置和比较从此虚拟机中的变量或字段检索的值。- 参数
-
value
- 要为其创建值的int - 结果
- 给定int的
IntegerValue
。
-
mirrorOf
LongValue mirrorOf(long value)
为给定值创建LongValue
。 此值可用于设置和比较从此虚拟机中的变量或字段检索的值。- 参数
-
value
- 创建值的long - 结果
- 给定长的
LongValue
。
-
mirrorOf
FloatValue mirrorOf(float value)
为给定值创建FloatValue
。 此值可用于设置和比较从此虚拟机中的变量或字段检索的值。- 参数
-
value
- 要为其创建值的浮点数 - 结果
- 给定浮点数的
FloatValue
。
-
mirrorOf
DoubleValue mirrorOf(double value)
为给定值创建DoubleValue
。 此值可用于设置和比较从此虚拟机中的变量或字段检索的值。- 参数
-
value
- 要为其创建值的double - 结果
- 给定双倍的
DoubleValue
。
-
mirrorOf
StringReference mirrorOf(String value)
在此虚拟机中创建一个字符串。 创建的字符串可用于设置和比较从此虚拟机中的变量或字段检索的字符串值。- 参数
-
value
- 要创建的字符串 - 结果
- a
StringReference
,用于镜像目标VM中新创建的字符串。 - 异常
-
VMCannotBeModifiedException
- 如果VirtualMachine是只读的 - 请 参阅canBeModified()
。
-
mirrorOfVoid
VoidValue mirrorOfVoid()
创建一个VoidValue
。 当要退出void方法时,可以将此值传递给ThreadReference.forceEarlyReturn(com.sun.jdi.Value)
。- 结果
-
VoidValue
。
-
process
Process process()
如果由LaunchingConnector
启动,则返回此虚拟机的Process
对象- 结果
- 此虚拟机的
Process
对象,如果未由LaunchingConnector
启动, 则为null 。 - 异常
-
VMCannotBeModifiedException
- 如果VirtualMachine是只读的 - 请 参阅canBeModified()
。
-
dispose
void dispose()
使此虚拟机镜像无效。 关闭目标VM的通信通道,目标VM准备接受来自此调试器或其他调试器的另一个后续连接,包括以下任务:- 所有活动请求均已取消。
- 由
suspend()
或ThreadReference.suspend()
暂停的所有线程将根据需要多次恢复运行。 - 在通过
ObjectReference.disableCollection()
禁用垃圾收集的所有情况下,都会重新启用垃圾收集。
源自此VirtualMachine的资源(ObjectReferences,ReferenceTypes等)将变为无效。
-
exit
void exit(int exitCode)
使镜像的VM以给定的错误代码终止。 释放与此VirtualMachine关联的所有资源。 如果镜像VM是远程的,则将关闭其通信通道。 源自此VirtualMachine的资源(ObjectReferences,ReferenceTypes等)将变为无效。在镜像VM中运行的线程突然终止。 不会抛出线程死亡异常,最后不会运行块。
- 参数
-
exitCode
- 目标VM的退出代码。 在某些平台上,退出代码可能会被截断,例如,低位8位。 - 异常
-
VMCannotBeModifiedException
- 如果VirtualMachine是只读的 - 请参阅canBeModified()
。
-
canWatchFieldModification
boolean canWatchFieldModification()
确定目标VM是否支持用于字段修改的观察点。- 结果
-
true
如果支持该功能,否则为false
。
-
canWatchFieldAccess
boolean canWatchFieldAccess()
确定目标VM是否支持用于字段访问的观察点。- 结果
-
true
如果支持该功能,否则为false
。
-
canGetBytecodes
boolean canGetBytecodes()
确定目标VM是否支持检索方法的字节码。- 结果
-
true
如果支持该功能),否则为false
。
-
canGetSyntheticAttribute
boolean canGetSyntheticAttribute()
确定目标VM是否支持查询方法或字段的合成属性。- 结果
-
true
如果支持该功能),否则为false
。
-
canGetOwnedMonitorInfo
boolean canGetOwnedMonitorInfo()
确定目标VM是否支持检索线程拥有的监视器。- 结果
-
true
如果支持该功能),否则为false
。
-
canGetCurrentContendedMonitor
boolean canGetCurrentContendedMonitor()
确定目标VM是否支持检索线程当前正在等待的监视器。- 结果
-
true
如果支持该功能),否则为false
。
-
canGetMonitorInfo
boolean canGetMonitorInfo()
确定目标VM是否支持检索对象的监视器信息。- 结果
-
true
如果支持该功能),否则为false
。
-
canUseInstanceFilters
boolean canUseInstanceFilters()
确定目标VM是否支持按特定实例对象过滤事件。 例如,请参见BreakpointRequest.addInstanceFilter(com.sun.jdi.ObjectReference)
。- 结果
-
true
如果支持该功能,否则为false
。
-
canRedefineClasses
boolean canRedefineClasses()
确定目标VM是否支持任何级别的类重新定义。- 结果
-
true
如果支持该功能),否则为false
。 - 从以下版本开始:
- 1.4
- 另请参见:
-
redefineClasses(java.util.Map<? extends com.sun.jdi.ReferenceType, byte[]>)
-
canAddMethod
boolean canAddMethod()
确定目标VM在执行类重新定义时是否支持添加方法。- 结果
-
true
如果支持该功能,否则为false
。 - 从以下版本开始:
- 1.4
- 另请参见:
-
redefineClasses(java.util.Map<? extends com.sun.jdi.ReferenceType, byte[]>)
-
canUnrestrictedlyRedefineClasses
boolean canUnrestrictedlyRedefineClasses()
确定目标VM在执行类重新定义时是否支持更改,否则将受到redefineClasses(java.util.Map<? extends com.sun.jdi.ReferenceType, byte[]>)
的限制。- 结果
-
true
如果支持该功能),否则为false
。 - 从以下版本开始:
- 1.4
- 另请参见:
-
redefineClasses(java.util.Map<? extends com.sun.jdi.ReferenceType, byte[]>)
-
canPopFrames
boolean canPopFrames()
确定目标VM是否支持弹出线程堆栈的帧。- 结果
-
true
如果支持该功能),否则为false
。 - 从以下版本开始:
- 1.4
- 另请参见:
-
ThreadReference.popFrames(com.sun.jdi.StackFrame)
-
canGetSourceDebugExtension
boolean canGetSourceDebugExtension()
确定目标VM是否支持获取源调试扩展。- 结果
-
true
如果支持该功能,否则为false
。 - 从以下版本开始:
- 1.4
- 另请参见:
-
ReferenceType.sourceDebugExtension()
-
canRequestVMDeathEvent
boolean canRequestVMDeathEvent()
确定目标VM是否支持创建VMDeathRequest
。- 结果
-
true
如果支持该功能),否则为false
。 - 从以下版本开始:
- 1.4
- 另请参见:
-
EventRequestManager.createVMDeathRequest()
-
canGetMethodReturnValues
boolean canGetMethodReturnValues()
确定目标VM是否支持在MethodExitEvent
中包含返回值。- 结果
-
true
如果支持该功能,否则为false
。 - 从以下版本开始:
- 1.6
- 另请参见:
-
EventRequestManager.createMethodExitRequest()
-
canGetInstanceInfo
boolean canGetInstanceInfo()
确定目标VM是否支持访问类实例,实例计数和引用对象。- 结果
-
true
如果特性被支持,false
否则。 - 从以下版本开始:
- 1.6
- 另请参见:
-
instanceCounts(java.util.List<? extends com.sun.jdi.ReferenceType>)
,ReferenceType.instances(long)
,ObjectReference.referringObjects(long)
-
canUseSourceNameFilters
boolean canUseSourceNameFilters()
确定目标VM是否支持按源名称过滤类准备事件。 见ClassPrepareRequest.addSourceNameFilter(java.lang.String)
。- 结果
-
true
如果支持该功能,否则为false
。 - 从以下版本开始:
- 1.6
-
canForceEarlyReturn
boolean canForceEarlyReturn()
确定目标VM是否支持强制方法提前返回。- 结果
-
true
如果支持该功能,否则为false
。 - 从以下版本开始:
- 1.6
- 另请参见:
-
ThreadReference.forceEarlyReturn(Value)
-
canBeModified
boolean canBeModified()
确定目标VM是否为只读VM。 如果在只读VM上调用将修改VM状态的方法,则抛出VMCannotBeModifiedException
。- 结果
-
true
如果支持该功能),否则为false
。 - 从以下版本开始:
- 1.5
-
canRequestMonitorEvents
boolean canRequestMonitorEvents()
确定目标VM是否支持创建MonitorContendedEnterRequest
。MonitorContendedEnteredRequest
s。MonitorWaitRequest
s。MonitorWaitedRequest
s。- 结果
-
true
如果支持该功能,否则为false
。 - 从以下版本开始:
- 1.6
- 另请参见:
-
EventRequestManager.createMonitorContendedEnterRequest()
,EventRequestManager.createMonitorContendedEnteredRequest()
,EventRequestManager.createMonitorWaitRequest()
,EventRequestManager.createMonitorWaitedRequest()
-
canGetMonitorFrameInfo
boolean canGetMonitorFrameInfo()
确定目标VM是否支持获取已获取监视器的帧。- 结果
-
true
如果支持该功能,否则为false
。 - 从以下版本开始:
- 1.6
- 另请参见:
-
ThreadReference.ownedMonitorsAndFrames()
-
canGetClassFileVersion
boolean canGetClassFileVersion()
确定目标VM是否支持读取类文件主要版本和次要版本。- 结果
-
true
如果支持该功能,否则为false
。 - 从以下版本开始:
- 1.6
- 另请参见:
-
ReferenceType.majorVersion()
,ReferenceType.minorVersion()
-
canGetConstantPool
boolean canGetConstantPool()
确定目标VM是否支持获取类的常量池信息。- 结果
-
true
如果支持该功能,否则为false
。 - 从以下版本开始:
- 1.6
- 另请参见:
-
ReferenceType.constantPoolCount()
,ReferenceType.constantPool()
-
canGetModuleInfo
default boolean canGetModuleInfo()
确定目标VM是否支持获取有关模块的信息。- 实现要求:
- 默认实现返回
false
。 - 结果
-
true
如果支持该功能,否则为false
- 从以下版本开始:
- 9
- 另请参见:
-
allModules()
,ReferenceType.module()
,ModuleReference
-
setDefaultStratum
void setDefaultStratum(String stratum)
- 参数
-
stratum
- 要设置为VM默认值的层,或使用每类默认值为null。 - 异常
-
UnsupportedOperationException
- 如果目标虚拟机不支持此操作。 - 从以下版本开始:
- 1.4
-
getDefaultStratum
String getDefaultStratum()
返回此VM的默认层。- 结果
-
null
(意思是应该使用每类默认值 -ReferenceType.defaultStratum()
- 除非使用setDefaultStratum(String)
设置了默认层。 - 从以下版本开始:
- 1.4
- 另请参见:
-
setDefaultStratum(String)
,ReferenceType.defaultStratum()
-
instanceCounts
long[] instanceCounts(List<? extends ReferenceType> refTypes)
返回'refTypes'列表中每个ReferenceType的实例数。 仅计算可用于垃圾收集目的的实例。并非所有目标虚拟机都支持此操作。 使用
canGetInstanceInfo()
确定是否支持该操作。- 参数
-
refTypes
- 要获取计数的ReferenceType
对象的列表。 - 结果
- 一个
long
的数组,long
包含“refTypes”列表中每个元素的一个元素。 数组的元素i包含'refTypes'列表中位置i处ReferenceType的目标VM中的实例数。 如果'refTypes'列表为空,则返回零长度数组。 如果refTypes中的ReferenceType已被垃圾回收,则为其实例计数返回零。 - 异常
-
UnsupportedOperationException
- 如果目标虚拟机不支持此操作 - 请参阅canGetInstanceInfo()
-
NullPointerException
- 如果'refTypes'列表为null。 - 从以下版本开始:
- 1.6
- 另请参见:
-
ReferenceType.instances(long)
,ObjectReference.referringObjects(long)
-
description
String description()
返回目标VM上的文本信息以及镜像它的调试器支持。 没有保证此信息的具体格式。 通常,此字符串包含目标VM和调试器接口的版本信息。 在VM和JDI版本更精确的信息,可通过version()
,VirtualMachineManager.majorInterfaceVersion()
和VirtualMachineManager.minorInterfaceVersion()
- 结果
- 说明。
-
version
String version()
返回属性java.version
报告的目标VM中Java Runtime Environment的版本。 要获取JDI接口版本,请使用VirtualMachineManager.majorInterfaceVersion()
和VirtualMachineManager.minorInterfaceVersion()
- 结果
- 目标VM版本。
-
name
String name()
返回属性java.vm.name
报告的目标VM的名称。- 结果
- 目标VM名称。
-
setDebugTraceMode
void setDebugTraceMode(int traceFlags)
跟踪com.sun.jdi实现执行的活动。 所有跟踪信息都输出到System.err。 给定的跟踪标志用于将输出限制为仅所需的信息。 给定的标志生效,相应的跟踪将继续,直到下一次调用此方法。输出取决于实现,并且可以忽略跟踪模式。
- 参数
-
traceFlags
- 标识要启用的跟踪类型。
-
-