0N/A<?
xml version="1.0" encoding="utf-8"?>
0N/A Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. 0N/A DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 0N/A This code is free software; you can redistribute it and/or modify it 0N/A under the terms of the GNU General Public License version 2 only, as 0N/A published by the Free Software Foundation. 0N/A This code is distributed in the hope that it will be useful, but WITHOUT 0N/A ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 0N/A FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 0N/A version 2 for more details (a copy is included in the LICENSE file that 0N/A accompanied this code). 0N/A You should have received a copy of the GNU General Public License version 0N/A 2 along with this work; if not, write to the Free Software Foundation, 0N/A Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 0N/A Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 0N/AEvents in the JVM are by default timed (it's more common) 0N/APerhaps a little strange. Might change. 0N/ADeclard with the 'event' tag. 0N/A<value fields> can be one or more of 0N/A value - a simple primitive or constant type value 0N/A structvalue - value is a sub-struct. This type must be previously defined 0N/AAll these require you to declare type, field and label of the field. They also accept 0N/Aan optional description of the field. If the meaning of the field is not obvious 0N/Afrom the label you should provide a description. If an event however is not actually 0N/Ameant for end-users, you should probably _not_ write descriptions at all, since you 0N/Amight just add more concepts the user has no notion of/interest in. Events should be modeled after what conceptual process you are expressing, _NOT_ from whatever data structures you might use inside the JVM for expressing a process. Declared with the 'struct' tag. Declares a structure type that can be used in other events. has_thread="true" is_instant="true">
<
value type="JAVALANGTHREAD" field="javalangthread" label="Java Thread"/>
has_thread="true" is_instant="true">
<
value type="JAVALANGTHREAD" field="javalangthread" label="Java Thread"/>
has_thread="true" has_stacktrace="true" is_instant="false">
<
value type="MILLIS" field="time" label="Sleep Time"/>
has_thread="true" has_stacktrace="true" is_instant="false">
<
value type="CLASS" field="klass" label="Class Parked On"/>
<
value type="MILLIS" field="timeout" label="Park Timeout"/>
<
value type="ADDRESS" field="address" label="Address of Object Parked" relation="JAVA_MONITOR_ADDRESS"/>
has_thread="true" has_stacktrace="true" is_instant="false">
<
value type="CLASS" field="klass" label="Monitor Class"/>
<
value type="JAVALANGTHREAD" field="previousOwner" label="Previous Monitor Owner"/>
<
value type="ADDRESS" field="address" label="Monitor Address" relation="JAVA_MONITOR_ADDRESS"/>
<
event id="JavaMonitorWait" path="java/monitor_wait" label="Java Monitor Wait" description="Waiting on a Java monitor" has_thread="true" has_stacktrace="true" is_instant="false">
<
value type="CLASS" field="klass" label="Monitor Class" description="Class of object waited on"/>
<
value type="OSTHREAD" field="notifier" label="Notifier Thread" description="Notifying Thread"/>
<
value type="MILLIS" field="timeout" label="Timeout" description="Maximum wait time"/>
<
value type="BOOLEAN" field="timedOut" label="Timed Out" description="Wait has been timed out"/>
<
value type="ADDRESS" field="address" label="Monitor Address" description="Address of object waited on" relation="JAVA_MONITOR_ADDRESS"/>
<
event id="ClassLoad" path="vm/class/load" label="Class Load" has_thread="true" has_stacktrace="true" is_instant="false">
<
value type="CLASS" field="loadedClass" label="Loaded Class"/>
<
value type="CLASS" field="definingClassLoader" label="Defining Class Loader"/>
<
value type="CLASS" field="initiatingClassLoader" label="Initiating Class Loader"/>
<
event id="ClassUnload" path="vm/class/unload" label="Class Unload" has_thread="true" is_instant="true">
<
value type="CLASS" field="unloadedClass" label="Unloaded Class"/>
<
value type="CLASS" field="definingClassLoader" label="Defining Class Loader"/>
<
struct id="VirtualSpace">
<
value type="ADDRESS" field="start" label="Start Address" description="Start address of the virtual space" />
<
value type="ADDRESS" field="committedEnd" label="Committed End Address" description="End address of the committed memory for the virtual space" />
<
value type="BYTES64" field="committedSize" label="Committed Size" description="Size of the committed memory for the virtual space" />
<
value type="ADDRESS" field="reservedEnd" label="Reserved End Address" description="End address of the reserved memory for the virtual space" />
<
value type="BYTES64" field="reservedSize" label="Reserved Size" description="Size of the reserved memory for the virtual space" />
<
struct id="ObjectSpace">
<
value type="ADDRESS" field="start" label="Start Address" description="Start address of the space" />
<
value type="ADDRESS" field="end" label="End Address" description="End address of the space" />
<
value type="BYTES64" field="used" label="Used" description="Bytes allocated by objects in the space" />
<
value type="BYTES64" field="size" label="Size" description="Size of the space" />
<
event id="GCHeapSummary" path="vm/gc/heap/summary" label="Heap Summary" is_instant="true">
<
value type="ULONG" field="gcId" label="GC ID" relation="GC_ID"/>
<
value type="GCWHEN" field="when" label="When" />
<
structvalue type="VirtualSpace" field="heapSpace" label="Heap Space"/>
<
value type="BYTES64" field="heapUsed" label="Heap Used" description="Bytes allocated by objects in the heap"/>
<
value type="ULONG" field="gcId" label="GC ID" relation="GC_ID"/>
<
value type="GCWHEN" field="when" label="When" />
<
structvalue type="VirtualSpace" field="permSpace" label="PermGen Space"/>
<
structvalue type="ObjectSpace" field="objectSpace" label="Object Space"/>
<
event id="PSHeapSummary" path="vm/gc/heap/ps_summary" label="ParallelScavengeHeap Summary" is_instant="true">
<
value type="ULONG" field="gcId" label="GC ID" relation="GC_ID"/>
<
value type="GCWHEN" field="when" label="When" />
<
structvalue type="VirtualSpace" field="oldSpace" label="Old Space"/>
<
structvalue type="ObjectSpace" field="oldObjectSpace" label="Old Object Space"/>
<
structvalue type="VirtualSpace" field="youngSpace" label="Young Space"/>
<
structvalue type="ObjectSpace" field="edenSpace" label="Eden Space"/>
<
structvalue type="ObjectSpace" field="fromSpace" label="From Space"/>
<
structvalue type="ObjectSpace" field="toSpace" label="To Space"/>
description="Garbage collection performed by the JVM">
<
value type="ULONG" field="gcId" label="GC ID" relation="GC_ID" />
<
value type="GCNAME" field="name" label="Name" description="The name of the Garbage Collector" />
<
value type="GCCAUSE" field="cause" label="Cause" description="The reason for triggering this Garbage Collection" />
<
value type="RELATIVE_TICKS" field="sumOfPauses" label="Sum of Pauses" description="Sum of all the times in which Java execution was paused during the garbage collection" />
<
value type="RELATIVE_TICKS" field="longestPause" label="Longest Pause" description="Longest individual pause during the garbage collection" />
description="Extra information specific to Parallel Old Garbage Collections">
<
value type="ULONG" field="gcId" label="GC ID" relation="GC_ID" />
<
value type="ADDRESS" field="densePrefix" label="Dense Prefix" description="The address of the dense prefix, used when compacting" />
description="Extra information specific to Young Garbage Collections">
<
value type="ULONG" field="gcId" label="GC ID" relation="GC_ID" />
<
value type="UINT" field="tenuringThreshold" label="Tenuring Threshold" />
description="Extra information specific to Old Garbage Collections">
<
value type="ULONG" field="gcId" label="GC ID" relation="GC_ID"/>
description="Extra information specific to G1 Garbage Collections">
<
value type="ULONG" field="gcId" label="GC ID" relation="GC_ID"/>
<
value type="G1YCTYPE" field="type" label="Type" />
<
value type="ULONG" field="gcId" label="GC ID" relation="GC_ID"/>
<
value type="UINT" field="cSetRegions" label="Collection Set Regions"/>
<
value type="BYTES64" field="cSetUsedBefore" label="Collection Set Before" description="Memory usage before GC in the collection set regions"/>
<
value type="BYTES64" field="cSetUsedAfter" label="Collection Set After" description="Memory usage after GC in the collection set regions"/>
<
value type="UINT" field="allocationRegions" label="Allocation Regions" description="Regions chosen as allocation regions during evacuation (includes survivors and old space regions)"/>
<
value type="BYTES64" field="allocRegionsUsedBefore" label="Alloc Regions Before" description="Memory usage before GC in allocation regions"/>
<
value type="BYTES64" field="allocRegionsUsedAfter" label="Alloc Regions After" description="Memory usage after GC in allocation regions"/>
<
value type="BYTES64" field="bytesCopied" label="BytesCopied"/>
<
value type="UINT" field="regionsFreed" label="Regions Freed"/>
label="GC Reference Processing" is_instant="true" description="Total count of processed references during GC">
<
value type="ULONG" field="gcId" label="GC ID" relation="GC_ID"/>
<
value type="REFERENCETYPE" field="type" label="Type" />
<
value type="ULONG" field="count" label="Total Count" />
<
value type="ULONG" field="objectCount" label="Object Count"/>
<
value type="BYTES64" field="firstSize" label="First Failed Object Size"/>
<
value type="BYTES64" field="smallestSize" label="Smallest Failed Object Size"/>
<
value type="BYTES64" field="totalSize" label="Total Object Size"/>
<
value type="ULONG" field="gcId" label="GC ID" relation="GC_ID" />
<
value type="CLASS" field="class" label="Class" />
<
value type="LONG" field="count" label="Count" />
<
value type="BYTES64" field="totalSize" label="Total Size" />
description="Promotion of an object failed">
<
value type="ULONG" field="gcId" label="GC ID" relation="GC_ID"/>
<
structvalue type="CopyFailed" field="data" label="data"/>
<
value type="OSTHREAD" field="thread" label="Running thread"/>
description="Evacuation of an object failed">
<
value type="ULONG" field="gcId" label="GC ID" relation="GC_ID"/>
<
structvalue type="CopyFailed" field="data" label="data"/>
is_instant="true" description="Concurrent Mode failed">
<
value type="ULONG" field="gcId" label="GC ID" relation="GC_ID"/>
<
value type="ULONG" field="gcId" label="GC ID" relation="GC_ID"/>
<
value type="UTF8" field="name" label="Name" />
<
value type="ULONG" field="gcId" label="GC ID" relation="GC_ID"/>
<
value type="UTF8" field="name" label="Name" />
<
value type="ULONG" field="gcId" label="GC ID" relation="GC_ID"/>
<
value type="UTF8" field="name" label="Name" />
<
value type="ULONG" field="gcId" label="GC ID" relation="GC_ID"/>
<
value type="UTF8" field="name" label="Name" />
has_thread="true" is_requestable="false" is_constant="false">
<
value type="METHOD" field="method" label="Java Method"/>
<
value type="INTEGER" field="compileID" label="Compilation ID" relation="COMP_ID"/>
<
value type="USHORT" field="compileLevel" label="Compilation Level"/>
<
value type="BOOLEAN" field="succeded" label="Succeeded"/>
<
value type="BOOLEAN" field="isOsr" label="On Stack Replacement"/>
<
value type="BYTES" field="codeSize" label="Compiled Code Size"/>
<
value type="BYTES" field="inlinedBytes" label="Inlined Code Size"/>
has_thread="true" is_requestable="false" is_constant="false">
<
value type="COMPILERPHASETYPE" field="phase" label="Compile Phase"/>
<
value type="INTEGER" field="compileID" label="Compilation ID" relation="COMP_ID"/>
<
value type="USHORT" field="phaseLevel" label="Phase Level"/>
has_thread="true" is_requestable="false" is_constant="false" is_instant="true">
<
value type="UTF8" field="failure" label="Message"/>
<
value type="INTEGER" field="compileID" label="Compilation ID" relation="COMP_ID"/>
<!-- Code sweeper events --> has_thread="true" is_requestable="false" is_constant="false">
<
value type="INTEGER" field="sweepIndex" label="Sweep Index" relation="SWEEP_ID"/>
<
value type="USHORT" field="sweepFractionIndex" label="Fraction Index"/>
<
value type="UINT" field="sweptCount" label="Methods Swept"/>
<
value type="UINT" field="flushedCount" label="Methods Flushed"/>
<
value type="UINT" field="markedCount" label="Methods Reclaim"/>
<
value type="UINT" field="zombifiedCount" label="Methods Zombified"/>
description="Clean code cache from oldest methods" has_thread="true" is_requestable="false" is_constant="false">
<
value type="UINT" field="disconnectedCount" label="Methods Disconnected"/>
<
value type="UINT" field="madeNonEntrantCount" label="Methods Made Non-Entrant"/>
<!-- Code cache events --> has_thread="true" is_requestable="false" is_constant="false" is_instant="true">
<
value type="ADDRESS" field="startAddress" label="Start Address"/>
<
value type="ADDRESS" field="commitedTopAddress" label="Commited Top"/>
<
value type="ADDRESS" field="reservedTopAddress" label="Reserved Top"/>
<
value type="INTEGER" field="entryCount" label="Entries"/>
<
value type="INTEGER" field="methodCount" label="Methods"/>
<
value type="INTEGER" field="adaptorCount" label="Adaptors"/>
<
value type="BYTES64" field="unallocatedCapacity" label="Unallocated"/>
<
value type="BYTES64" field="largestFreeBlock" label="Largest Free Block"/>
<
value type="INTEGER" field="fullCount" label="Full Count"/>
description="Execution of a VM Operation" has_thread="true">
<
value type="VMOPERATIONTYPE" field="operation" label="Operation" />
<
value type="BOOLEAN" field="safepoint" label="At Safepoint" description="If the operation occured at a safepoint."/>
<
value type="BOOLEAN" field="blocking" label="Caller Blocked" description="If the calling thread was blocked until the operation was complete."/>
<
value type="OSTHREAD" field="caller" label="Caller" transition="FROM" description="Thread requesting operation. If non-blocking, will be set to 0 indicating thread is unknown."/>
<!-- Allocation events --> description="Allocation in new Thread Local Allocation Buffer" has_thread="true" has_stacktrace="true" is_instant="true">
<
value type="CLASS" field="class" label="Class" description="Class of allocated object"/>
<
value type="BYTES64" field="allocationSize" label="Allocation Size"/>
<
value type="BYTES64" field="tlabSize" label="TLAB Size"/>
description="Allocation outside Thread Local Allocation Buffers" has_thread="true" has_stacktrace="true" is_instant="true">
<
value type="CLASS" field="class" label="Class" description="Class of allocated object"/>
<
value type="BYTES64" field="allocationSize" label="Allocation Size"/>