-
- All Superinterfaces:
-
Mirror
- All Known Subinterfaces:
-
PathSearchingVirtualMachine
public interface VirtualMachine extends Mirror
用于调试的虚拟机。 更准确地说,代表目标VM的复合状态的mirror
。 所有其他镜像都与此接口的实例相关联。 通过此接口的实例直接或间接访问所有其他镜像。 此接口直接支持对全局VM属性的访问和VM执行的控制。此接口的实例由实例
Connector
创建。 例如,AttachingConnector
附加到目标VM并返回其虚拟机镜像。 连接器通常将通过调用VirtualMachineManager的VirtualMachineManager.createVirtualMachine(Connection)
createVirtualMachine(Connection)方法来创建一个VirtualMachine。请注意,在接收到
VMStartEvent
之前,由启动连接器启动的目标虚拟机不能保证稳定。VirtualMachine
以VirtualMachine
作为参数的任何方法可能会导致VMDisconnectedException
如果目标VM断开连接,并且VMDisconnectEvent
已经或可用于从EventQueue
读取。VirtualMachine
以VirtualMachine
作为参数的任何方法如果目标虚拟机的内存已经用完,可能会抛出VMOutOfMemoryException
。- 从以下版本开始:
- 1.3
-
-
Field Summary
Fields Modifier and Type Field 描述 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 Modifier and Type 方法 描述 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
s。boolean
canRequestVMDeathEvent()
确定目标VM是否支持创建VMDeathRequest
s。boolean
canUnrestrictedlyRedefineClasses()
确定目标VM是否在执行类重新定义时支持无限制的更改。boolean
canUseInstanceFilters()
确定目标VM是否支持特定实例对象的过滤事件。boolean
canUseSourceNameFilters()
确定目标虚拟机是否支持通过源名称过滤类准备事件。boolean
canWatchFieldAccess()
确定目标VM是否支持现场访问的观察点。boolean
canWatchFieldModification()
确定目标VM是否支持现场修改的观察点。List<ReferenceType>
classesByName(String className)
返回与给定名称相匹配的加载引用类型。String
description()
返回目标虚拟机上的文本信息和镜像它的调试器支持。void
dispose()
使此虚拟机镜像无效。EventQueue
eventQueue()
返回此虚拟机的事件队列。EventRequestManager
eventRequestManager()
返回此虚拟机的事件请求管理器。void
exit(int exitCode)
导致镜像的VM以给定的错误代码终止。String
getDefaultStratum()
返回此虚拟机的默认层。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)
void
suspend()
暂停在该虚拟机中运行的应用程序的执行。List<ThreadGroupReference>
topLevelThreadGroups()
返回没有父级的每个线程组。String
version()
返回由属性java.version
报告的目标虚拟机中的Java运行时环境的版本。-
Methods inherited from interface com.sun.jdi.Mirror
toString, virtualMachine
-
-
-
-
字段详细信息
-
TRACE_NONE
static final int TRACE_NONE
所有跟踪都被禁用。- 另请参见:
- Constant Field Values
-
TRACE_SENDS
static final int TRACE_SENDS
为发送到目标VM的JDWP数据包启用跟踪。- 另请参见:
- Constant Field Values
-
TRACE_RECEIVES
static final int TRACE_RECEIVES
从目标VM接收的JDWP数据包启用跟踪。- 另请参见:
- Constant Field Values
-
TRACE_EVENTS
static final int TRACE_EVENTS
跟踪启用内部事件处理。- 另请参见:
- Constant Field Values
-
TRACE_REFTYPES
static final int TRACE_REFTYPES
跟踪启用了引用类型的内部管理。- 另请参见:
- Constant Field Values
-
TRACE_OBJREFS
static final int TRACE_OBJREFS
跟踪启用对象引用的内部管理。- 另请参见:
- Constant Field Values
-
TRACE_ALL
static final int TRACE_ALL
所有跟踪都启用- 另请参见:
- Constant Field Values
-
-
方法详细信息
-
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()
是假的,尝试添加一个方法会抛出这个异常。 - 如果
canUnrestrictedlyRedefineClasses()
为false,则尝试以下任何操作将抛出此异常- 改变模式(字段)
- 改变层次结构(子类,接口)
- 删除方法
- 改变类修饰符
- 改变方法修饰符
- 如果
-
NoClassDefFoundError
- 如果字节不对应于引用类型(名称不匹配)。 -
VerifyError
- 如果“验证者”检测到一个类虽然形成良好,却包含内部不一致或安全问题。 -
ClassFormatError
- 如果字节不表示有效的类。 -
ClassCircularityError
- 如果在初始化类时检测到圆度。 -
UnsupportedClassVersionError
- 如果虚拟机不支持以字节为单位的主要和次要版本号。 -
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
- 一个长期为它创建的价值 - 结果
-
LongValue
为给定的长。
-
mirrorOf
FloatValue mirrorOf(float value)
为给定值创建一个FloatValue
。 该值可用于设置和比较从该虚拟机中的变量或字段检索的值。- 参数
-
value
- 为其创建值的浮点数 - 结果
-
给定浮动的
FloatValue
。
-
mirrorOf
DoubleValue mirrorOf(double value)
为给定值创建一个DoubleValue
。 该值可用于设置和比较从该虚拟机中的变量或字段检索的值。- 参数
-
value
- 创建该值的双倍 - 结果
-
给予双倍的
DoubleValue
。
-
mirrorOf
StringReference mirrorOf(String value)
在此虚拟机中创建一个字符串。 创建的字符串可用于设置和比较从该虚拟机中的变量或字段检索的字符串值。- 参数
-
value
- 要创建的字符串 - 结果
-
一个
StringReference
镜像目标虚拟机中新创建的字符串。 - 异常
-
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是否在执行类重新定义时支持无限制的更改。- 结果
-
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
s。- 结果
-
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()
确定目标虚拟机是否支持通过源名称过滤类准备事件。 见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
s。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()
返回此虚拟机的默认层。- 结果
-
null
(意思是应该使用每类默认值 -ReferenceType.defaultStratum()
),除非默认层次已经设置为setDefaultStratum(String)
。 - 从以下版本开始:
- 1.4
- 另请参见:
-
setDefaultStratum(String)
,ReferenceType.defaultStratum()
-
instanceCounts
long[] instanceCounts(List<? extends ReferenceType> refTypes)
返回“refTypes”列表中每个ReferenceType的实例数。 只有为垃圾收集目的可达到的实例才会被计数。并非所有目标虚拟机都支持此操作。 使用
canGetInstanceInfo()
来确定是否支持该操作。- 参数
-
refTypes
- 要获取计数的ReferenceType
对象的列表。 - 结果
-
一个
long
的数组,包含'refTypes'列表中每个元素的一个元素。 数组的元素i包含“refTypes”列表中位置i的ReferenceType的目标VM中的实例数。 如果“refTypes”列表为空,则返回零长度数组。 如果refTypes中的ReferenceType已经被垃圾回收,则返回零的实例计数。 - 异常
-
UnsupportedOperationException
- 如果目标虚拟机不支持此操作 - 请参阅canGetInstanceInfo()
-
NullPointerException
- 如果'refTypes'列表为空。 - 从以下版本开始:
- 1.6
- 另请参见:
-
ReferenceType.instances(long)
,ObjectReference.referringObjects(long)
-
description
String description()
返回目标虚拟机上的文本信息和镜像它的调试器支持。 没有保证此信息的具体格式。 通常,此字符串包含目标VM和调试器接口的版本信息。 在VM和JDI版本更精确的信息,可通过version()
,VirtualMachineManager.majorInterfaceVersion()
,并VirtualMachineManager.minorInterfaceVersion()
- 结果
- 说明。
-
version
String version()
返回由属性java.version
报告的目标虚拟机中的Java运行时环境的版本。 要获得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
- 识别要启用的跟踪类型。
-
-