< prev index next >

src/hotspot/share/prims/jvmti.xml

Print this page

    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.
< prev index next >