< prev index next >

src/hotspot/share/prims/jvmti.xml

Print this page
rev 49244 : [mq]: event-only
rev 49245 : [mq]: event3
rev 49246 : [mq]: event4
rev 49247 : [mq]: event5

*** 10351,10360 **** --- 10351,10368 ---- are enabled then the <eventlink id="ClassFileLoadHook"/> events can be posted for classes loaded in the primordial phase. See <eventlink id="ClassFileLoadHook"/>. </description> </capabilityfield> + <capabilityfield id="can_sample_heap" since="11"> + <description> + Can sample the heap. + If this capability is enabled then the heap sampling method + <functionlink id="SetHeapSamplingRate"></functionlink> can be called and the + <eventlink id="SampledObjectAlloc"></eventlink> events can be enabled. + </description> + </capabilityfield> </capabilitiestypedef> <function id="GetPotentialCapabilities" jkernel="yes" phase="onload" num="140"> <synopsis>Get Potential Capabilities</synopsis> <description>
*** 11529,11538 **** --- 11537,11585 ---- </errors> </function> </category> + <category id="heap_monitoring" label="Heap Monitoring"> + <function id="SetHeapSamplingRate" phase="any" num="156" since="11"> + <synopsis>Set Heap Sampling Rate</synopsis> + <description> + Set up the allocation system to sample memory at a given + average rate via the <paramlink id="sampling_rate"></paramlink> parameter, defined + by sampling rate in bytes. The + <paramlink id="sampling_rate"></paramlink> will be the average sampling rate in bytes used throughout + the execution. + + Setting <paramlink id="sampling_rate"></paramlink> to 0 disables the heap sampling. + Combined with a <eventlink id="SampledObjectAlloc"/> event, the Java agent can obtain object allocations with a given sample rate. + </description> + <origin>new</origin> + <capabilities> + <required id="can_sample_heap"></required> + </capabilities> + <parameters> + <param id="sampling_rate"> + <jint/> + <description> + The sampling rate in bytes used for sampling. The sampler will use a statistical approach to + provide in average sampling every <paramlink id="sampling_rate"/> allocated bytes. + + Note: a low sampling rate, such as sampling every 1024 bytes, will probably incur a high overhead. + Due to the incurred overhead, the sampler should only be used when knowing it may impact performance. + On the other hand, sampling however every 1024kB has a far less chance of a high overhead since it will sample + 1024 times less than the 1024-byte sampling. + </description> + </param> + </parameters> + <errors> + <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT"> + <paramlink id="sampling_rate"></paramlink> is less than zero. + </error> + </errors> + </function> + </category> + </functionsection> <errorsection label="Error Reference"> <intro> Every <jvmti/> function returns a <b><code>jvmtiError</code></b> error code.
*** 13493,13503 **** </description> </param> <param id="object"> <jobject/> <description> ! JNI local reference to the object that was allocated </description> </param> <param id="object_klass"> <jclass/> <description> --- 13540,13606 ---- </description> </param> <param id="object"> <jobject/> <description> ! JNI local reference to the object that was allocated. ! </description> ! </param> ! <param id="object_klass"> ! <jclass/> ! <description> ! JNI local reference to the class of the object. ! </description> ! </param> ! <param id="size"> ! <jlong/> ! <description> ! Size of the object (in bytes). See <functionlink id="GetObjectSize"/>. ! </description> ! </param> ! </parameters> ! </event> ! ! <event label="Sampled Object Allocation Trace" ! id="SampledObjectAlloc" const="JVMTI_EVENT_SAMPLED_OBJECT_ALLOC" num="86" since="11"> ! <description> ! Sent when an object is sampled via the ! <internallink id="heap_monitoring"> Heap Sampling Monitoring system </internallink>. ! Therefore, this event is sent to the user if there is at least one call to ! <functionlink id="SetHeapSamplingRate"></functionlink> with a strictly positive integer value. ! ! The event is sent once the allocation has been done and provides the object, stack trace ! for the allocation, the thread allocating, the size of allocation, and class. ! <p/> ! Typical use cases of this system is to determine where most heap allocation are originating from. ! Using this in conjunction of weak references and the function ! <functionlink id="GetStackTrace"></functionlink>, a user can track which objects were allocated from which ! stacktrace and which are still live during the execution of the program. ! </description> ! <origin>new</origin> ! <capabilities> ! <required id="can_sample_heap"></required> ! </capabilities> ! <parameters> ! <param id="jni_env"> ! <outptr> ! <struct>JNIEnv</struct> ! </outptr> ! <description> ! The JNI environment of the event (current) thread. ! </description> ! </param> ! <param id="thread"> ! <jthread/> ! <description> ! Thread allocating the object. ! </description> ! </param> ! <param id="object"> ! <jobject/> ! <description> ! JNI local reference to the object that was allocated. </description> </param> <param id="object_klass"> <jclass/> <description>
< prev index next >