1 <?xml version="1.0" encoding="UTF-8"?>
2 <?xml-stylesheet type="text/xsl" href="jvmti.xsl"?>
3 <!--
4 Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved.
5 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
6
7 This code is free software; you can redistribute it and/or modify it
8 under the terms of the GNU General Public License version 2 only, as
9 published by the Free Software Foundation.
10
11 This code is distributed in the hope that it will be useful, but WITHOUT
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 version 2 for more details (a copy is included in the LICENSE file that
15 accompanied this code).
16
17 You should have received a copy of the GNU General Public License version
18 2 along with this work; if not, write to the Free Software Foundation,
19 Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20
21 Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 or visit www.oracle.com if you need additional information or have any
23 questions.
24 -->
5871 <description>
5872 The thread of the frame containing the variable's value.
5873 </description>
5874 </param>
5875 <param id="depth">
5876 <jframeID thread="thread"/>
5877 <description>
5878 The depth of the frame containing the variable's value.
5879 </description>
5880 </param>
5881 <param id="slot">
5882 <jint/>
5883 <description>
5884 The variable's slot number.
5885 </description>
5886 </param>
5887 <param id="value_ptr">
5888 <outptr><jobject/></outptr>
5889 <description>
5890 On return, points to the variable's value.
5891 </description>
5892 </param>
5893 </parameters>
5894 <errors>
5895 <error id="JVMTI_ERROR_INVALID_SLOT">
5896 Invalid <code>slot</code>.
5897 </error>
5898 <error id="JVMTI_ERROR_TYPE_MISMATCH">
5899 The variable type is not
5900 <code>Object</code> or a subclass of <code>Object</code>.
5901 </error>
5902 <error id="JVMTI_ERROR_OPAQUE_FRAME">
5903 The implementation is unable to get the frame locals
5904 (e.g. the frame at <code>depth</code> is executing a native method).
5905 </error>
5906 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
5907 Thread was not suspended and was not the current thread.
5908 </error>
5909 </errors>
5910 </function>
5924 <capabilities>
5925 <required id="can_access_local_variables"></required>
5926 </capabilities>
5927 <parameters>
5928 <param id="thread">
5929 <jthread null="current" frame="frame" impl="noconvert"/>
5930 <description>
5931 The thread of the frame containing the variable's value.
5932 </description>
5933 </param>
5934 <param id="depth">
5935 <jframeID thread="thread"/>
5936 <description>
5937 The depth of the frame containing the variable's value.
5938 </description>
5939 </param>
5940 <param id="value_ptr">
5941 <outptr><jobject/></outptr>
5942 <description>
5943 On return, points to the variable's value.
5944 </description>
5945 </param>
5946 </parameters>
5947 <errors>
5948 <error id="JVMTI_ERROR_INVALID_SLOT">
5949 If the specified frame is a static method frame.
5950 </error>
5951 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
5952 Thread was not suspended and was not the current thread.
5953 </error>
5954 </errors>
5955 </function>
5956 <function id="GetLocalInt" num="22">
5957 <synopsis>Get Local Variable - Int</synopsis>
5958 <description>
5959 This function can be used to retrieve the value of a local
5960 variable whose type is <code>int</code>,
5961 <code>short</code>, <code>char</code>, <code>byte</code>, or
5962 <code>boolean</code>.
5963 <p/>
7335 </param>
7336 <param id="source_name_ptr">
7337 <allocbuf><char/></allocbuf>
7338 <description>
7339 On return, points to the class's source file name, encoded as a
7340 <internallink id="mUTF">modified UTF-8</internallink> string.
7341 </description>
7342 </param>
7343 </parameters>
7344 <errors>
7345 <error id="JVMTI_ERROR_ABSENT_INFORMATION">
7346 Class information does not include a source file name. This includes
7347 cases where the class is an array class or primitive class.
7348 </error>
7349 </errors>
7350 </function>
7351
7352 <function id="GetClassModifiers" phase="start" num="51">
7353 <synopsis>Get Class Modifiers</synopsis>
7354 <description>
7355 For the class indicated by <code>klass</code>, return the access
7356 flags
7357 via <code>modifiers_ptr</code>.
7358 Access flags are defined in <vmspec chapter="4"/>.
7359 <p/>
7360 If the class is an array class, then its public, private, and protected
7361 modifiers are the same as those of its component type. For arrays of
7362 primitives, this component type is represented by one of the primitive
7363 classes (for example, <code>java.lang.Integer.TYPE</code>).
7364 <p/>
7365 If the class is a primitive class, its public modifier is always true,
7366 and its protected and private modifiers are always false.
7367 <p/>
7368 If the class is an array class or a primitive class then its final
7369 modifier is always true and its interface modifier is always false.
7370 The values of its other modifiers are not determined by this specification.
7371
7372 </description>
7373 <origin>jvmdi</origin>
7374 <capabilities>
7375 </capabilities>
7376 <parameters>
7377 <param id="klass">
7378 <jclass/>
7379 <description>
7380 The class to query.
7381 </description>
7382 </param>
7383 <param id="modifiers_ptr">
7384 <outptr><jint/></outptr>
7385 <description>
7386 On return, points to the current access flags of this class.
7387
7388 </description>
7389 </param>
7390 </parameters>
7391 <errors>
7392 </errors>
7393 </function>
7394
7395 <function id="GetClassMethods" phase="start" num="52">
7396 <synopsis>Get Class Methods</synopsis>
7397 <description>
7398 For the class indicated by <code>klass</code>, return a count of
7399 methods via <code>method_count_ptr</code> and a list of
7400 method IDs via <code>methods_ptr</code>. The method list contains
7401 constructors and static initializers as well as true methods.
7402 Only directly declared methods are returned (not inherited methods).
7403 An empty method list is returned for array classes and primitive classes
7404 (for example, <code>java.lang.Integer.TYPE</code>).
7405 </description>
7406 <origin>jvmdi</origin>
13971 </description>
13972 </param>
13973 </parameters>
13974 </event>
13975
13976 <event label="VM Object Allocation"
13977 id="VMObjectAlloc" const="JVMTI_EVENT_VM_OBJECT_ALLOC" num="84">
13978 <description>
13979 Sent when a method causes the virtual machine to directly allocate an
13980 Object visible to Java programming language code.
13981 Generally object allocation should be detected by instrumenting
13982 the bytecodes of allocating methods.
13983 Object allocation generated in native code by JNI function
13984 calls should be detected using
13985 <internallink id="jniIntercept">JNI function interception</internallink>.
13986 Some methods might not have associated bytecodes and are not
13987 native methods, they instead are executed directly by the
13988 VM. These methods should send this event.
13989 Virtual machines which are incapable of bytecode instrumentation
13990 for some or all of their methods can send this event.
13991
13992 Note that the <internallink
13993 id="SampledObjectAlloc">SampledObjectAlloc</internallink>
13994 event is triggered on all Java object allocations, including those
13995 caused by bytecode method execution, JNI method execution, and
13996 directly by VM methods.
13997 <p/>
13998 Typical examples where this event might be sent:
13999 <ul>
14000 <li>Reflection -- for example, <code>java.lang.Class.newInstance()</code></li>
14001 <li>Methods not represented by bytecodes -- for example, VM intrinsics and
14002 J2ME preloaded classes</li>
14003 </ul>
14004 Cases where this event would not be generated:
14005 <ul>
14006 <li>Allocation due to bytecodes -- for example, the <code>new</code>
14007 and <code>newarray</code> VM instructions</li>
14008 <li>Allocation due to JNI function calls -- for example,
14009 <code>AllocObject</code></li>
14010 <li>Allocations during VM initialization</li>
14017 </capabilities>
14018 <parameters>
14019 <param id="jni_env">
14020 <outptr>
14021 <struct>JNIEnv</struct>
14022 </outptr>
14023 <description>
14024 The JNI environment of the event (current) thread
14025 </description>
14026 </param>
14027 <param id="thread">
14028 <jthread/>
14029 <description>
14030 Thread allocating the object.
14031 </description>
14032 </param>
14033 <param id="object">
14034 <jobject/>
14035 <description>
14036 JNI local reference to the object that was allocated.
14037 </description>
14038 </param>
14039 <param id="object_klass">
14040 <jclass/>
14041 <description>
14042 JNI local reference to the class of the object.
14043 </description>
14044 </param>
14045 <param id="size">
14046 <jlong/>
14047 <description>
14048 Size of the object (in bytes). See <functionlink id="GetObjectSize"/>.
14049 </description>
14050 </param>
14051 </parameters>
14052 </event>
14053
14054 <event label="Sampled Object Allocation"
14055 id="SampledObjectAlloc" const="JVMTI_EVENT_SAMPLED_OBJECT_ALLOC" filtered="thread" num="86" since="11">
14056 <description>
14063 When the number of bytes exceeds the sampling interval, it will send another event.
14064 This implies that, on average, one object will be sampled every time a thread has
14065 allocated 512KB bytes since the last sample.
14066 <p/>
14067 Note that the sampler is pseudo-random: it will not sample every 512KB precisely.
14068 The goal of this is to ensure high quality sampling even if allocation is
14069 happening in a fixed pattern (i.e., the same set of objects are being allocated
14070 every 512KB).
14071 <p/>
14072 If another sampling interval is required, the user can call
14073 <functionlink id="SetHeapSamplingInterval"></functionlink> with a strictly positive integer value,
14074 representing the new sampling interval.
14075 <p/>
14076 This event is sent once the sampled allocation has been performed. It provides the object, stack trace
14077 of the allocation, the thread allocating, the size of allocation, and the object's class.
14078 <p/>
14079 A typical use case of this system is to determine where heap allocations originate.
14080 In conjunction with weak references and the function
14081 <functionlink id="GetStackTrace"></functionlink>, a user can track which objects were allocated from which
14082 stack trace, and which are still live during the execution of the program.
14083 </description>
14084 <origin>new</origin>
14085 <capabilities>
14086 <required id="can_generate_sampled_object_alloc_events"></required>
14087 </capabilities>
14088 <parameters>
14089 <param id="jni_env">
14090 <outptr>
14091 <struct>JNIEnv</struct>
14092 </outptr>
14093 <description>
14094 The JNI environment of the event (current) thread.
14095 </description>
14096 </param>
14097 <param id="thread">
14098 <jthread/>
14099 <description>
14100 Thread allocating the object.
14101 </description>
14102 </param>
14103 <param id="object">
14104 <jobject/>
14105 <description>
14106 JNI local reference to the object that was allocated.
14107 </description>
14108 </param>
14109 <param id="object_klass">
14110 <jclass/>
14111 <description>
14112 JNI local reference to the class of the object
14113 </description>
14114 </param>
14115 <param id="size">
14116 <jlong/>
14117 <description>
14118 Size of the object (in bytes). See <functionlink id="GetObjectSize"/>.
14119 </description>
14120 </param>
14121 </parameters>
14122 </event>
14123
14124 <event label="Object Free"
14125 id="ObjectFree" const="JVMTI_EVENT_OBJECT_FREE" num="83">
14126 <description>
14127 An Object Free event is sent when the garbage collector frees an object.
14128 Events are only sent for tagged objects--see
14129 <internallink id="Heap">heap functions</internallink>.
14130 <p/>
14131 The event handler must not use JNI functions and
14132 must not use <jvmti/> functions except those which
14133 specifically allow such use (see the raw monitor, memory management,
14134 and environment local storage functions).
14135 </description>
14136 <origin>new</origin>
14137 <capabilities>
14138 <required id="can_generate_object_free_events"></required>
14139 </capabilities>
14140 <parameters>
14141 <param id="tag">
14142 <jlong/>
14143 <description>
14144 The freed object's tag
14145 </description>
14146 </param>
14147 </parameters>
14148 </event>
14149
14150 <event label="Garbage Collection Start"
14151 id="GarbageCollectionStart" const="JVMTI_EVENT_GARBAGE_COLLECTION_START" num="81">
14152 <description>
14153 A Garbage Collection Start event is sent when a
14154 garbage collection pause begins.
|
1 <?xml version="1.0" encoding="UTF-8"?>
2 <?xml-stylesheet type="text/xsl" href="jvmti.xsl"?>
3 <!--
4 Copyright (c) 2002, 2026, Oracle and/or its affiliates. All rights reserved.
5 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
6
7 This code is free software; you can redistribute it and/or modify it
8 under the terms of the GNU General Public License version 2 only, as
9 published by the Free Software Foundation.
10
11 This code is distributed in the hope that it will be useful, but WITHOUT
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 version 2 for more details (a copy is included in the LICENSE file that
15 accompanied this code).
16
17 You should have received a copy of the GNU General Public License version
18 2 along with this work; if not, write to the Free Software Foundation,
19 Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20
21 Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 or visit www.oracle.com if you need additional information or have any
23 questions.
24 -->
5871 <description>
5872 The thread of the frame containing the variable's value.
5873 </description>
5874 </param>
5875 <param id="depth">
5876 <jframeID thread="thread"/>
5877 <description>
5878 The depth of the frame containing the variable's value.
5879 </description>
5880 </param>
5881 <param id="slot">
5882 <jint/>
5883 <description>
5884 The variable's slot number.
5885 </description>
5886 </param>
5887 <param id="value_ptr">
5888 <outptr><jobject/></outptr>
5889 <description>
5890 On return, points to the variable's value.
5891 When preview features are enabled, if the requested local is the
5892 "<code>this</code>" object, and "<code>this</code>" is a value
5893 object under construction, the value_ptr is set to a snapshot
5894 of the "<code>this</code>" object that represents the value
5895 object's state at the point the snapshot is taken.
5896 </description>
5897 </param>
5898 </parameters>
5899 <errors>
5900 <error id="JVMTI_ERROR_INVALID_SLOT">
5901 Invalid <code>slot</code>.
5902 </error>
5903 <error id="JVMTI_ERROR_TYPE_MISMATCH">
5904 The variable type is not
5905 <code>Object</code> or a subclass of <code>Object</code>.
5906 </error>
5907 <error id="JVMTI_ERROR_OPAQUE_FRAME">
5908 The implementation is unable to get the frame locals
5909 (e.g. the frame at <code>depth</code> is executing a native method).
5910 </error>
5911 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
5912 Thread was not suspended and was not the current thread.
5913 </error>
5914 </errors>
5915 </function>
5929 <capabilities>
5930 <required id="can_access_local_variables"></required>
5931 </capabilities>
5932 <parameters>
5933 <param id="thread">
5934 <jthread null="current" frame="frame" impl="noconvert"/>
5935 <description>
5936 The thread of the frame containing the variable's value.
5937 </description>
5938 </param>
5939 <param id="depth">
5940 <jframeID thread="thread"/>
5941 <description>
5942 The depth of the frame containing the variable's value.
5943 </description>
5944 </param>
5945 <param id="value_ptr">
5946 <outptr><jobject/></outptr>
5947 <description>
5948 On return, points to the variable's value.
5949 When preview features are enabled, and the local instance is a value
5950 object under construction, the value_ptr is set to a snapshot
5951 of the "<code>this</code>" object that represents the value
5952 object's state at the point the snapshot is taken.
5953 </description>
5954 </param>
5955 </parameters>
5956 <errors>
5957 <error id="JVMTI_ERROR_INVALID_SLOT">
5958 If the specified frame is a static method frame.
5959 </error>
5960 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
5961 Thread was not suspended and was not the current thread.
5962 </error>
5963 </errors>
5964 </function>
5965 <function id="GetLocalInt" num="22">
5966 <synopsis>Get Local Variable - Int</synopsis>
5967 <description>
5968 This function can be used to retrieve the value of a local
5969 variable whose type is <code>int</code>,
5970 <code>short</code>, <code>char</code>, <code>byte</code>, or
5971 <code>boolean</code>.
5972 <p/>
7344 </param>
7345 <param id="source_name_ptr">
7346 <allocbuf><char/></allocbuf>
7347 <description>
7348 On return, points to the class's source file name, encoded as a
7349 <internallink id="mUTF">modified UTF-8</internallink> string.
7350 </description>
7351 </param>
7352 </parameters>
7353 <errors>
7354 <error id="JVMTI_ERROR_ABSENT_INFORMATION">
7355 Class information does not include a source file name. This includes
7356 cases where the class is an array class or primitive class.
7357 </error>
7358 </errors>
7359 </function>
7360
7361 <function id="GetClassModifiers" phase="start" num="51">
7362 <synopsis>Get Class Modifiers</synopsis>
7363 <description>
7364 For the class indicated by <code>klass</code>, return the Java language
7365 modifiers and class/interface properties of the corresponding
7366 <code>java.lang.Class</code> object, via <code>modifiers_ptr</code>.
7367 <p/>
7368 The modifiers are encoded as a mask of access-flag bit values defined in
7369 <vmspec chapter="4"/>. The returned value is not necessarily the value of the
7370 access_flags item in the class file of <code>klass</code>.
7371 In particular, for member, local, or anonymous classes and interfaces, the result
7372 may include modifiers represented by access flags from the <code>InnerClasses</code>
7373 attribute, such as <code>ACC_STATIC</code>.
7374 <p/>
7375 The modifiers include, as applicable, the Java Virtual Machine constants for
7376 public, private, protected, final, static, abstract, and interface, as well as
7377 access-flag bit values for other class/interface properties encoded in the
7378 result of invoking <code>java.lang.Class.getModifiers()</code> on the
7379 corresponding <code>java.lang.Class</code> object.
7380 <p/>
7381 If <code>klass</code> is an array class, then its public, private, and
7382 protected modifiers are the same as those of its component type. For arrays of
7383 primitives, this component type is represented by one of the primitive
7384 classes, such as <code>java.lang.Integer.TYPE</code>. For array classes, the
7385 abstract and final modifiers are set, and the interface modifier is not set.
7386 <p/>
7387 If <code>klass</code> is a primitive type or void, then its public, abstract,
7388 and final modifiers are always set, and its protected, private, and interface
7389 modifiers are never set.
7390 <p/>
7391 When preview features are enabled, the <code>ACC_IDENTITY</code> access flag
7392 is set if and only if <code>klass</code> is an identity class or an array class.
7393 <p/>
7394 When preview features are disabled, the <code>ACC_SUPER</code> access flag may be
7395 set only if <code>klass</code> is not a primitive type or void. The flag has no
7396 effective meaning.
7397 </description>
7398 <origin>jvmdi</origin>
7399 <capabilities>
7400 </capabilities>
7401 <parameters>
7402 <param id="klass">
7403 <jclass/>
7404 <description>
7405 The class to query.
7406 </description>
7407 </param>
7408 <param id="modifiers_ptr">
7409 <outptr><jint/></outptr>
7410 <description>
7411 On return, points to the modifiers of this class.
7412
7413 </description>
7414 </param>
7415 </parameters>
7416 <errors>
7417 </errors>
7418 </function>
7419
7420 <function id="GetClassMethods" phase="start" num="52">
7421 <synopsis>Get Class Methods</synopsis>
7422 <description>
7423 For the class indicated by <code>klass</code>, return a count of
7424 methods via <code>method_count_ptr</code> and a list of
7425 method IDs via <code>methods_ptr</code>. The method list contains
7426 constructors and static initializers as well as true methods.
7427 Only directly declared methods are returned (not inherited methods).
7428 An empty method list is returned for array classes and primitive classes
7429 (for example, <code>java.lang.Integer.TYPE</code>).
7430 </description>
7431 <origin>jvmdi</origin>
13996 </description>
13997 </param>
13998 </parameters>
13999 </event>
14000
14001 <event label="VM Object Allocation"
14002 id="VMObjectAlloc" const="JVMTI_EVENT_VM_OBJECT_ALLOC" num="84">
14003 <description>
14004 Sent when a method causes the virtual machine to directly allocate an
14005 Object visible to Java programming language code.
14006 Generally object allocation should be detected by instrumenting
14007 the bytecodes of allocating methods.
14008 Object allocation generated in native code by JNI function
14009 calls should be detected using
14010 <internallink id="jniIntercept">JNI function interception</internallink>.
14011 Some methods might not have associated bytecodes and are not
14012 native methods, they instead are executed directly by the
14013 VM. These methods should send this event.
14014 Virtual machines which are incapable of bytecode instrumentation
14015 for some or all of their methods can send this event.
14016 When preview features are enabled and the allocated object has no identity,
14017 <code>null</code> is passed for the <paramlink id="object"></paramlink> parameter.
14018
14019 Note that the <internallink
14020 id="SampledObjectAlloc">SampledObjectAlloc</internallink>
14021 event is triggered on all Java object allocations, including those
14022 caused by bytecode method execution, JNI method execution, and
14023 directly by VM methods.
14024 <p/>
14025 Typical examples where this event might be sent:
14026 <ul>
14027 <li>Reflection -- for example, <code>java.lang.Class.newInstance()</code></li>
14028 <li>Methods not represented by bytecodes -- for example, VM intrinsics and
14029 J2ME preloaded classes</li>
14030 </ul>
14031 Cases where this event would not be generated:
14032 <ul>
14033 <li>Allocation due to bytecodes -- for example, the <code>new</code>
14034 and <code>newarray</code> VM instructions</li>
14035 <li>Allocation due to JNI function calls -- for example,
14036 <code>AllocObject</code></li>
14037 <li>Allocations during VM initialization</li>
14044 </capabilities>
14045 <parameters>
14046 <param id="jni_env">
14047 <outptr>
14048 <struct>JNIEnv</struct>
14049 </outptr>
14050 <description>
14051 The JNI environment of the event (current) thread
14052 </description>
14053 </param>
14054 <param id="thread">
14055 <jthread/>
14056 <description>
14057 Thread allocating the object.
14058 </description>
14059 </param>
14060 <param id="object">
14061 <jobject/>
14062 <description>
14063 JNI local reference to the object that was allocated.
14064 Null when preview features are enabled and the allocated object has no identity.
14065 </description>
14066 </param>
14067 <param id="object_klass">
14068 <jclass/>
14069 <description>
14070 JNI local reference to the class of the object.
14071 </description>
14072 </param>
14073 <param id="size">
14074 <jlong/>
14075 <description>
14076 Size of the object (in bytes). See <functionlink id="GetObjectSize"/>.
14077 </description>
14078 </param>
14079 </parameters>
14080 </event>
14081
14082 <event label="Sampled Object Allocation"
14083 id="SampledObjectAlloc" const="JVMTI_EVENT_SAMPLED_OBJECT_ALLOC" filtered="thread" num="86" since="11">
14084 <description>
14091 When the number of bytes exceeds the sampling interval, it will send another event.
14092 This implies that, on average, one object will be sampled every time a thread has
14093 allocated 512KB bytes since the last sample.
14094 <p/>
14095 Note that the sampler is pseudo-random: it will not sample every 512KB precisely.
14096 The goal of this is to ensure high quality sampling even if allocation is
14097 happening in a fixed pattern (i.e., the same set of objects are being allocated
14098 every 512KB).
14099 <p/>
14100 If another sampling interval is required, the user can call
14101 <functionlink id="SetHeapSamplingInterval"></functionlink> with a strictly positive integer value,
14102 representing the new sampling interval.
14103 <p/>
14104 This event is sent once the sampled allocation has been performed. It provides the object, stack trace
14105 of the allocation, the thread allocating, the size of allocation, and the object's class.
14106 <p/>
14107 A typical use case of this system is to determine where heap allocations originate.
14108 In conjunction with weak references and the function
14109 <functionlink id="GetStackTrace"></functionlink>, a user can track which objects were allocated from which
14110 stack trace, and which are still live during the execution of the program.
14111 When preview features are enabled and the allocated object has no identity,
14112 <code>null</code> is passed for the <paramlink id="object"></paramlink> parameter.
14113 Note that weak references support identity objects only.
14114 </description>
14115 <origin>new</origin>
14116 <capabilities>
14117 <required id="can_generate_sampled_object_alloc_events"></required>
14118 </capabilities>
14119 <parameters>
14120 <param id="jni_env">
14121 <outptr>
14122 <struct>JNIEnv</struct>
14123 </outptr>
14124 <description>
14125 The JNI environment of the event (current) thread.
14126 </description>
14127 </param>
14128 <param id="thread">
14129 <jthread/>
14130 <description>
14131 Thread allocating the object.
14132 </description>
14133 </param>
14134 <param id="object">
14135 <jobject/>
14136 <description>
14137 JNI local reference to the object that was allocated.
14138 Null when preview features are enabled and the allocated object has no identity.
14139 </description>
14140 </param>
14141 <param id="object_klass">
14142 <jclass/>
14143 <description>
14144 JNI local reference to the class of the object
14145 </description>
14146 </param>
14147 <param id="size">
14148 <jlong/>
14149 <description>
14150 Size of the object (in bytes). See <functionlink id="GetObjectSize"/>.
14151 </description>
14152 </param>
14153 </parameters>
14154 </event>
14155
14156 <event label="Object Free"
14157 id="ObjectFree" const="JVMTI_EVENT_OBJECT_FREE" num="83">
14158 <description>
14159 An Object Free event is sent when the garbage collector frees an object.
14160 Events are only sent for tagged objects--see
14161 <internallink id="Heap">heap functions</internallink>.
14162 <p/>
14163 The event handler must not use JNI functions and
14164 must not use <jvmti/> functions except those which
14165 specifically allow such use (see the raw monitor, memory management,
14166 and environment local storage functions).
14167 When preview features are enabled, this event does not support value object allocations.
14168 </description>
14169 <origin>new</origin>
14170 <capabilities>
14171 <required id="can_generate_object_free_events"></required>
14172 </capabilities>
14173 <parameters>
14174 <param id="tag">
14175 <jlong/>
14176 <description>
14177 The freed object's tag
14178 </description>
14179 </param>
14180 </parameters>
14181 </event>
14182
14183 <event label="Garbage Collection Start"
14184 id="GarbageCollectionStart" const="JVMTI_EVENT_GARBAGE_COLLECTION_START" num="81">
14185 <description>
14186 A Garbage Collection Start event is sent when a
14187 garbage collection pause begins.
|