traceevents.xml 60.2 KB
Newer Older
卓昂 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957
<?xml version="1.0" encoding="utf-8"?>
<!--
 Copyright (c) 2012, 2019, Oracle and/or its affiliates. All rights reserved.
 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.

 This code is free software; you can redistribute it and/or modify it
 under the terms of the GNU General Public License version 2 only, as
 published by the Free Software Foundation.

 This code is distributed in the hope that it will be useful, but WITHOUT
 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 version 2 for more details (a copy is included in the LICENSE file that
 accompanied this code).

 You should have received a copy of the GNU General Public License version
 2 along with this work; if not, write to the Free Software Foundation,
 Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.

 Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 or visit www.oracle.com if you need additional information or have any
 questions.

-->


<!DOCTYPE events SYSTEM "trace.dtd">

<events>

<!--

Events in the JVM are by default timed (it's more common)
Perhaps a little strange. Might change.

EVENTS

Declard with the 'event' tag.

<value fields> can be one or more of
   value            - a simple primitive or constant type value
   structvalue      - value is a sub-struct. This type must be previously defined
                      with 'struct'
All these require you to declare type, field and label of the field. They also accept
an optional description of the field. If the meaning of the field is not obvious
from the label you should provide a description. If an event however is not actually
meant for end-users, you should probably _not_ write descriptions at all, since you
might 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.


STRUCT

Declared with the 'struct' tag.

Declares a structure type that can be used in other events.

-->

  <event id="ThreadStart" path="java/thread_start" label="Java Thread Start"
         has_thread="true" is_instant="true">
    <value type="THREAD" field="thread" label="Java Thread"/>
  </event>

  <event id="ThreadEnd" path="java/thread_end" label="Java Thread End"
         has_thread="true" is_instant="true">
    <value type="THREAD" field="thread" label="Java Thread"/>
  </event>

  <event id="ThreadSleep" path="java/thread_sleep" label="Java Thread Sleep"
          has_thread="true" has_stacktrace="true" is_instant="false">
    <value type="MILLIS" field="time" label="Sleep Time"/>
  </event>

  <event id="ThreadPark" path="java/thread_park" label="Java Thread Park"
          has_thread="true" has_stacktrace="true" is_instant="false">
    <value type="CLASS" field="parkedClass" label="Class Parked On"/>
    <value type="MILLIS" field="timeout" label="Park Timeout"/>
    <value type="ADDRESS" field="address" label="Address of Object Parked" relation="JavaMonitorAddress"/>
  </event>

  <event id="JavaMonitorEnter" path="java/monitor_enter" label="Java Monitor Blocked"
          has_thread="true" has_stacktrace="true" is_instant="false">
    <value type="CLASS" field="monitorClass" label="Monitor Class"/>
    <value type="THREAD" field="previousOwner" label="Previous Monitor Owner"/>
    <value type="ADDRESS" field="address" label="Monitor Address" relation="JavaMonitorAddress"/>
  </event>

  <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="monitorClass" label="Monitor Class" description="Class of object waited on"/>
    <value type="THREAD" 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="JavaMonitorAddress"/>
  </event>

  <event id="JavaMonitorInflate" path="java/monitor_inflate" label="Java Monitor Inflated"
         has_thread="true" has_stacktrace="true" is_instant="false">
    <value type="CLASS" field="monitorClass" label="Monitor Class"/>
    <value type="ADDRESS" field="address" label="Monitor Address" relation="JavaMonitorAddress"/>
    <value type="INFLATECAUSE" field="cause" label="Monitor Inflation Cause" description="Cause of inflation"/>
  </event>

  <event id="BiasedLockRevocation" path="java/biased_lock_revocation" label="Biased Lock Revocation"
         description="Revoked bias of object" has_thread="true" has_stacktrace="true" is_instant="false">
    <value type="CLASS" field="lockClass" label="Lock Class" description="Class of object whose biased lock was revoked"/>
    <value type="INTEGER" field="safepointId" label="Safepoint Identifier" relation="SafepointId"/>
    <value type="THREAD" field="previousOwner" label="Previous Owner" description="Thread owning the bias before revocation"/>
  </event>

  <event id="BiasedLockSelfRevocation" path="java/biased_lock_self_revocation" label="Biased Lock Self Revocation"
         description="Revoked bias of object biased towards own thread" has_thread="true" has_stacktrace="true" is_instant="false">
    <value type="CLASS" field="lockClass" label="Lock Class" description="Class of object whose biased lock was revoked"/>
  </event>

  <event id="BiasedLockClassRevocation" path="java/biased_lock_class_revocation" label="Biased Lock Class Revocation"
         description="Revoked biases for all instances of a class" has_thread="true" has_stacktrace="true" is_instant="false">
    <value type="CLASS" field="revokedClass" label="Revoked Class" description="Class whose biased locks were revoked"/>
    <value type="BOOLEAN" field="disableBiasing" label="Disable Further Biasing" description="Whether further biasing for instances of this class will be allowed"/>
    <value type="INTEGER" field="safepointId" label="Safepoint Identifier" relation="SafepointId"/>
  </event>

  <event id="ReservedStackActivation" path="vm/runtime/reserved_stack_activation" label="Reserved Stack Activation"
         description="Activation of Reserved Stack Area caused by stack overflow with ReservedStackAccess annotated method in call stack"
         has_thread="true" has_stacktrace="true" is_instant="true">
      <value type="METHOD" field="method" label="Java Method"/>
  </event>

  <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="CLASSLOADER" field="definingClassLoader" label="Defining Class Loader"/>
    <value type="CLASSLOADER" field="initiatingClassLoader" label="Initiating Class Loader"/>
  </event>

  <event id="ClassDefine" path="vm/class/define" label="Class Define"
         has_thread="true" has_stacktrace="true" is_instant="true">
    <value type="CLASS" field="definedClass" label="Defined Class"/>
    <value type="CLASSLOADER" field="definingClassLoader" label="Defining Class Loader"/>
  </event>

  <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="CLASSLOADER" field="definingClassLoader" label="Defining Class Loader"/>
  </event>

  <event id="IntFlagChanged" path="vm/flag/int_changed" label="Int Flag Changed"
         is_instant="true">
    <value type="STRING" field="name" label="Name" />
    <value type="INTEGER" field="oldValue" label="Old Value" />
    <value type="INTEGER" field="newValue" label="New Value" />
    <value type="FLAGVALUEORIGIN" field="origin" label="Origin" />
  </event>

  <event id="UnsignedIntFlagChanged" path="vm/flag/uint_changed" label="Unsigned Int Flag Changed"
         is_instant="true">
    <value type="STRING" field="name" label="Name" />
    <value type="UINT" field="oldValue" label="Old Value" />
    <value type="UINT" field="newValue" label="New Value" />
    <value type="FLAGVALUEORIGIN" field="origin" label="Origin" />
  </event>

  <event id="LongFlagChanged" path="vm/flag/long_changed" label="Long Flag Changed"
         is_instant="true">
    <value type="STRING" field="name" label="Name" />
    <value type="LONG" field="oldValue" label="Old Value" />
    <value type="LONG" field="newValue" label="New Value" />
    <value type="FLAGVALUEORIGIN" field="origin" label="Origin" />
  </event>

  <event id="UnsignedLongFlagChanged" path="vm/flag/ulong_changed" label="Unsigned Long Flag Changed"
         is_instant="true">
    <value type="STRING" field="name" label="Name" />
    <value type="ULONG" field="oldValue" label="Old Value" />
    <value type="ULONG" field="newValue" label="New Value" />
    <value type="FLAGVALUEORIGIN" field="origin" label="Origin" />
  </event>

  <event id="DoubleFlagChanged" path="vm/flag/double_changed" label="Double Flag Changed"
         is_instant="true">
    <value type="STRING" field="name" label="Name" />
    <value type="DOUBLE" field="oldValue" label="Old Value" />
    <value type="DOUBLE" field="newValue" label="New Value" />
    <value type="FLAGVALUEORIGIN" field="origin" label="Origin" />
  </event>

  <event id="BooleanFlagChanged" path="vm/flag/boolean_changed" label="Boolean Flag Changed"
         is_instant="true">
    <value type="STRING" field="name" label="Name" />
    <value type="BOOLEAN" field="oldValue" label="Old Value" />
    <value type="BOOLEAN" field="newValue" label="New Value" />
    <value type="FLAGVALUEORIGIN" field="origin" label="Origin" />
  </event>

  <event id="StringFlagChanged" path="vm/flag/string_changed" label="String Flag Changed"
         is_instant="true">
    <value type="STRING" field="name" label="Name" />
    <value type="STRING" field="oldValue" label="Old Value" />
    <value type="STRING" field="newValue" label="New Value" />
    <value type="FLAGVALUEORIGIN" field="origin" label="Origin" />
  </event>

  <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>

  <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" />
  </struct>

  <event id="GCHeapSummary" path="vm/gc/heap/summary" label="Heap Summary" is_instant="true">
    <value type="UINT" field="gcId" label="GC Identifier" relation="GcId"/>
    <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"/>
  </event>

  <struct id="MetaspaceSizes">
    <value type="BYTES64" field="committed" label="Committed" description="Committed memory for this space" />
    <value type="BYTES64" field="used" label="Used" description="Bytes allocated by objects in the space" />
    <value type="BYTES64" field="reserved" label="Reserved" description="Reserved memory for this space" />
  </struct>

  <event id="MetaspaceSummary" path="vm/gc/heap/metaspace_summary" label="Metaspace Summary" is_instant="true">
    <value type="UINT" field="gcId" label="GC Identifier" relation="GcId"/>
    <value type="GCWHEN" field="when" label="When" />
    <value type="BYTES64" field="gcThreshold" label="GC Threshold" />
    <structvalue type="MetaspaceSizes" field="metaspace" label="Total"/>
    <structvalue type="MetaspaceSizes" field="dataSpace" label="Data"/>
    <structvalue type="MetaspaceSizes" field="classSpace" label="Class"/>
  </event>

  <event id="MetaspaceGCThreshold" path="vm/gc/metaspace/gc_threshold" label="Metaspace GC Threshold" is_instant="true">
    <value type="BYTES64" field="oldValue" label="Old Value" />
    <value type="BYTES64" field="newValue" label="New Value" />
    <value type="GCTHRESHOLDUPDATER" field="updater" label="Updater" />
  </event>

  <event id="MetaspaceAllocationFailure" path="vm/gc/metaspace/allocation_failure" label="Metaspace Allocation Failure" is_instant="true" has_stacktrace="true">
    <value type="CLASSLOADER" field="classLoader" label="Class Loader" />
    <value type="BOOLEAN" field="anonymousClassLoader" label="Anonymous Class Loader" />
    <value type="BYTES64" field="size" label="Size" />
    <value type="METADATATYPE" field="metadataType" label="Metadata Type" />
    <value type="METASPACEOBJTYPE" field="metaspaceObjectType" label="Metaspace Object Type" />
  </event>

  <event id="MetaspaceOOM" path="vm/gc/metaspace/out_of_memory" label="Metaspace Out of Memory" is_instant="true" has_stacktrace="true">
    <value type="CLASSLOADER" field="classLoader" label="Class Loader" />
    <value type="BOOLEAN" field="anonymousClassLoader" label="Anonymous Class Loader" />
    <value type="BYTES64" field="size" label="Size" />
    <value type="METADATATYPE" field="metadataType" label="Metadata Type" />
    <value type="METASPACEOBJTYPE" field="metaspaceObjectType" label="Metaspace Object Type" />
  </event>

  <event id="MetaspaceChunkFreeListSummary" path="vm/gc/metaspace/chunk_free_list_summary" label="Metaspace Chunk Free List Summary" is_instant="true">
    <value type="UINT" field="gcId" label="GC Identifier" relation="GcId"/>
    <value type="GCWHEN" field="when" label="When" />
    <value type="METADATATYPE" field="metadataType" label="Metadata Type" />
    <value type="ULONG" field="specializedChunks" label="Specialized Chunks" />
    <value type="BYTES64" field="specializedChunksTotalSize" label="Specialized Chunks Total Size" />
    <value type="ULONG" field="smallChunks" label="Small Chunks" />
    <value type="BYTES64" field="smallChunksTotalSize" label="Small Chunks Total Size" />
    <value type="ULONG" field="mediumChunks" label="Medium Chunks" />
    <value type="BYTES64" field="mediumChunksTotalSize" label="Medium Chunks Total Size" />
    <value type="ULONG" field="humongousChunks" label="Humongous Chunks" />
    <value type="BYTES64" field="humongousChunksTotalSize" label="Humongous Chunks Total Size" />
  </event>

  <event id="PSHeapSummary" path="vm/gc/heap/ps_summary" label="Parallel Scavenge Heap Summary" is_instant="true">
    <value type="UINT" field="gcId" label="GC Identifier" relation="GcId"/>
    <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"/>
  </event>

  <event id="G1HeapSummary" path="vm/gc/heap/g1_summary" label="G1 Heap Summary" is_instant="true">
    <value type="UINT" field="gcId" label="GC Identifier" relation="GcId"/>
    <value type="GCWHEN" field="when" label="When" />

    <value type="BYTES64" field="edenUsedSize" label="Eden Used Size" />
    <value type="BYTES64" field="edenTotalSize" label="Eden Total Size" />
    <value type="BYTES64" field="survivorUsedSize" label="Survivor Used Size" />
    <value type="UINT" field="numberOfRegions" label="Number of Regions" />
  </event>

  <event id="GarbageCollection" path="vm/gc/collector/garbage_collection" label="Garbage Collection"
         description="Garbage collection performed by the JVM">
    <value type="UINT" field="gcId"  label="GC Identifier" relation="GcId" />
    <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="TICKSPAN" field="sumOfPauses" label="Sum of Pauses" description="Sum of all the times in which Java execution was paused during the garbage collection" />
    <value type="TICKSPAN" field="longestPause" label="Longest Pause" description="Longest individual pause during the garbage collection" />
  </event>

  <event id="ParallelOldGarbageCollection" path="vm/gc/collector/parold_garbage_collection" label="Parallel Old Garbage Collection"
         description="Extra information specific to Parallel Old Garbage Collections">
    <value type="UINT" field="gcId"  label="GC Identifier" relation="GcId" />
    <value type="ADDRESS" field="densePrefix" label="Dense Prefix" description="The address of the dense prefix, used when compacting" />
  </event>

  <event id="YoungGarbageCollection" path="vm/gc/collector/young_garbage_collection" label="Young Garbage Collection"
         description="Extra information specific to Young Garbage Collections">
    <value type="UINT" field="gcId"  label="GC Identifier" relation="GcId" />
    <value type="UINT" field="tenuringThreshold" label="Tenuring Threshold" />
  </event>

  <event id="OldGarbageCollection" path="vm/gc/collector/old_garbage_collection" label="Old Garbage Collection"
         description="Extra information specific to Old Garbage Collections">
    <value type="UINT" field="gcId" label="GC Identifier" relation="GcId"/>
  </event>

  <event id="G1GarbageCollection" path="vm/gc/collector/g1_garbage_collection" label="G1 Garbage Collection"
         description="Extra information specific to G1 Garbage Collections">
    <value type="UINT" field="gcId" label="GC Identifier" relation="GcId"/>
    <value type="G1YCTYPE" field="type" label="Type" />
  </event>

  <event id="G1MMU" path="vm/gc/detailed/g1_mmu_info" label="G1 MMU Information" is_instant="true">
    <value type="UINT" field="gcId" label="GC Identifier" relation="GcId"/>
    <value type="MILLIS" field="timeSlice" label="Time Slice" description="Time slice used to calculate MMU"/>
    <value type="MILLIS" field="gcTime" label="GC Time" description="Time stopped because of GC during last time slice"/>
    <value type="MILLIS" field="pauseTarget" label="Pause Target" description="Max time allowed to be spent on GC during last time slice"/>
  </event>

  <event id="EvacuationInformation" path="vm/gc/detailed/evacuation_info" label="Evacuation Information" is_instant="true">
    <value type="UINT" field="gcId" label="GC Identifier" relation="GcId"/>
    <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="allocationRegionsUsedBefore" label="Allocation Regions Before" description="Memory usage before GC in allocation regions"/>
    <value type="BYTES64" field="allocationRegionsUsedAfter" label="Allocation Regions After" description="Memory usage after GC in allocation regions"/>
    <value type="BYTES64" field="bytesCopied" label="Bytes Copied"/>
    <value type="UINT" field="regionsFreed" label="Regions Freed"/>
  </event>

  <event id="GCReferenceStatistics" path="vm/gc/reference/statistics"
         label="GC Reference Statistics" is_instant="true"
         description="Total count of processed references during GC">
    <value type="UINT" field="gcId" label="GC Identifier" relation="GcId"/>
    <value type="REFERENCETYPE" field="type" label="Type" />
    <value type="ULONG" field="count" label="Total Count" />
  </event>

  <struct id="CopyFailed">
    <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"/>
  </struct>

  <event id="ObjectCountAfterGC" path="vm/gc/detailed/object_count_after_gc" is_instant="true" label="Object Count after GC">
    <value type="UINT" field="gcId"  label="GC Identifier" relation="GcId" />
    <value type="CLASS" field="objectClass" label="Object Class" />
    <value type="LONG" field="count" label="Count" />
    <value type="BYTES64" field="totalSize" label="Total Size" />
  </event>

  <struct id="G1EvacuationStatistics">
    <value type="UINT" field="gcId" label="GC Identifier" relation="GcId"/>
    <value type="BYTES64" field="allocated" label="Allocated" description="Total memory allocated by PLABs"/>
    <value type="BYTES64" field="wasted" label="Wasted" description="Total memory wasted within PLABs due to alignment or refill"/>
    <value type="BYTES64" field="used" label="Used" description="Total memory occupied by objects within PLABs"/>
    <value type="BYTES64" field="undoWaste" label="Undo Wasted" description="Total memory wasted due to allocation undo within PLABs"/>
    <value type="BYTES64" field="regionEndWaste" label="Region End Wasted" description="Total memory wasted at the end of regions due to refill"/>
    <value type="UINT" field="regionsRefilled" label="Region Refills" description="Total memory wasted at the end of regions due to refill"/>
    <value type="BYTES64" field="directAllocated" label="Allocated (direct)" description="Total memory allocated using direct allocation outside of PLABs"/>
    <value type="BYTES64" field="failureUsed" label="Used (failure)" description="Total memory occupied by objects in regions where evacuation failed"/>
    <value type="BYTES64" field="failureWaste" label="Wasted (failure)" description="Total memory left unused in regions where evacuation failed"/>
  </struct>

  <event id="G1EvacuationYoungStatistics" path="vm/gc/detailed/g1_evac_young_stats" label="G1 Evacuation Statistics for Young"
         is_instant="true" description="Memory related evacuation statistics during GC for the young generation">
    <structvalue type="G1EvacuationStatistics" field="statistics" label="Evacuation Statistics"/>
  </event>

  <event id="G1EvacuationOldStatistics" path="vm/gc/detailed/g1_evac_old_stats" label="G1 Evacuation Memory Statistics for Old"
         is_instant="true" description="Memory related evacuation statistics during GC for the old generation">
    <structvalue type="G1EvacuationStatistics" field="statistics" label="Evacuation Statistics"/>
  </event>

  <event id="G1BasicIHOP" path="vm/gc/detailed/g1_basic_ihop_status" label="G1 Basic IHOP Statistics"
         is_instant="true" description="Basic statistics related to current IHOP calculation">
    <value type="UINT" field="gcId" label="GC Identifier" relation="GcId"/>
    <value type="BYTES64" field="threshold" label="Current IHOP Threshold" description="Current IHOP threshold"/>
    <value type="PERCENTAGE" field="thresholdPercentage" label="Current IHOP Threshold" description="Current IHOP threshold in percent of old generation"/>
    <value type="BYTES64" field="targetOccupancy" label="Target Occupancy" description="Target old generation occupancy to reach at the start of mixed GC"/>
    <value type="BYTES64" field="currentOccupancy" label="Current Occupancy" description="Current old generation occupancy"/>
    <value type="BYTES64" field="recentMutatorAllocationSize" label="Recent Mutator Allocation Size" description="Mutator allocation during mutator operation in the most recent interval"/>
    <value type="MILLIS" field="recentMutatorDuration" label="Recent Mutator Duration" description="Time the mutator ran in the most recent interval"/>
    <value type="DOUBLE" field="recentAllocationRate" label="Recent Allocation Rate" description="Allocation rate of the mutator in the most recent interval in bytes/second"/>
    <value type="MILLIS" field="lastMarkingDuration" label="Last Marking Duration" description="Last time from the end of the last initial mark to the first mixed GC"/>
  </event>

  <event id="G1AdaptiveIHOP" path="vm/gc/detailed/g1_adaptive_ihop_status" label="G1 Adaptive IHOP Statistics"
         is_instant="true" description="Statistics related to current adaptive IHOP calculation">
    <value type="UINT" field="gcId" label="GC Identifier" relation="GcId"/>
    <value type="BYTES64" field="threshold" label="Threshold" description="Current IHOP Threshold"/>
    <value type="PERCENTAGE" field="thresholdPercentage" label="Threshold" description="Current IHOP threshold in percent of the internal target occupancy"/>
    <value type="BYTES64" field="ihopTargetOccupancy" label="IHOP Target Occupancy" description="Internal target old generation occupancy to reach at the start of mixed GC"/>
    <value type="BYTES64" field="currentOccupancy" label="Current Occupancy" description="Current old generation occupancy"/>
    <value type="BYTES64" field="additionalBufferSize" label="Additional Buffer" description="Additional buffer size" experimental="true"/>
    <value type="DOUBLE" field="predictedAllocationRate" label="Predicted Allocation Rate" description="Current predicted allocation rate for the mutator in bytes/second"/>
    <value type="MILLIS" field="predictedMarkingDuration" label="Predicted Marking Duration" description="Current predicted time from the end of the last initial mark to the first mixed GC"/>
    <value type="BOOLEAN" field="predictionActive" label="Prediction Active" description="Indicates whether the adaptive IHOP prediction is active"/>
  </event>

  <!-- Promotion events, Supported GCs are Parallel Scavange, G1 and CMS with Parallel New. -->
  <event id="PromoteObjectInNewPLAB" path="vm/gc/detailed/object_promotion_in_new_PLAB" label="Promotion in new PLAB"
         description="Object survived scavenge and was copied to a new Promotion Local Allocation Buffer (PLAB). Supported GCs are Parallel Scavange, G1 and CMS with Parallel New. Due to promotion being done in parallel an object might be reported multiple times as the GC threads race to copy all objects."
         has_thread="true" has_stacktrace="false" is_instant="true">
    <value type="UINT" field="gcId" label="GC Identifier" relation="GcId" description="Identifier signifying GC during which the object was promoted"/>
    <value type="CLASS" field="objectClass" label="Object Class" description="Class of promoted object"/>
    <value type="BYTES64" field="objectSize" label="Object Size" description="Size of promoted object"/>
    <value type="UINT" field="tenuringAge" label="Object Tenuring Age" description="Tenuring age of a surviving object before being copied. The tenuring age of an object is a value between 0-15 and is incremented each scavange the object survives. Newly allocated objects have tenuring age 0."/>
    <value type="BOOLEAN" field="tenured" label="Tenured" description="True if object was promoted to Old space, otherwise the object was aged and copied to a Survivor space"/>
    <value type="BYTES64" field="plabSize" label="PLAB Size" description="Size of the allocated PLAB to which the object was copied"/>
  </event>

  <event id="PromoteObjectOutsidePLAB" path="vm/gc/detailed/object_promotion_outside_PLAB" label="Promotion outside PLAB"
         description="Object survived scavenge and was copied directly to the heap. Supported GCs are Parallel Scavange, G1 and CMS with Parallel New. Due to promotion being done in parallel an object might be reported multiple times as the GC threads race to copy all objects."
         has_thread="true" has_stacktrace="false" is_instant="true">
    <value type="UINT" field="gcId" label="GC Identifier" relation="GcId" description="Identifier signifying GC during which the object was promoted"/>
    <value type="CLASS" field="objectClass" label="Object Class" description="Class of promoted object"/>
    <value type="BYTES64" field="objectSize" label="Object Size" description="Size of promoted object"/>
    <value type="UINT" field="tenuringAge" label="Object Tenuring Age" description="Tenuring age of a surviving object before being copied. The tenuring age of an object is a value between 0-15 and is incremented each scavange the object survives. Newly allocated objects have tenuring age 0."/>
    <value type="BOOLEAN" field="tenured" label="Tenured" description="True if object was promoted to Old space, otherwise the object was aged and copied to a Survivor space"/>
  </event>

  <event id="PromotionFailed" path="vm/gc/detailed/promotion_failed" label="Promotion Failed" is_instant="true"
         description="Promotion of an object failed">
    <value type="UINT" field="gcId" label="GC Identifier" relation="GcId"/>
    <structvalue type="CopyFailed" field="promotionFailed" label="Promotion Failed Data"/>
    <value type="THREAD" field="thread" label="Running thread"/>
  </event>

  <event id="EvacuationFailed" path="vm/gc/detailed/evacuation_failed" label="Evacuation Failed" is_instant="true"
         description="Evacuation of an object failed">
    <value type="UINT" field="gcId" label="GC Identifier" relation="GcId"/>
    <structvalue type="CopyFailed" field="evacuationFailed" label="Evacuation Failed Data"/>
  </event>

  <event id="ConcurrentModeFailure" path="vm/gc/detailed/concurrent_mode_failure" label="Concurrent Mode Failure"
         is_instant="true" description="Concurrent Mode failed">
    <value type="UINT" field="gcId" label="GC Identifier" relation="GcId"/>
  </event>

  <event id="GCPhasePause" path="vm/gc/phases/pause" label="GC Phase Pause" has_thread="true">
    <value type="UINT" field="gcId" label="GC Identifier" relation="GcId"/>
    <value type="STRING" field="name" label="Name" />
  </event>

  <event id="GCPhasePauseLevel1" path="vm/gc/phases/pause_level_1" label="GC Phase Pause Level 1" has_thread="true">
    <value type="UINT" field="gcId" label="GC Identifier" relation="GcId"/>
    <value type="STRING" field="name" label="Name" />
  </event>

  <event id="GCPhasePauseLevel2" path="vm/gc/phases/pause_level_2" label="GC Phase Pause Level 2" has_thread="true">
    <value type="UINT" field="gcId" label="GC Identifier" relation="GcId"/>
    <value type="STRING" field="name" label="Name" />
  </event>

  <event id="GCPhasePauseLevel3" path="vm/gc/phases/pause_level_3" label="GC Phase Pause Level 3" has_thread="true">
    <value type="UINT" field="gcId" label="GC Identifier" relation="GcId"/>
    <value type="STRING" field="name" label="Name" />
  </event>

  <event id="GCPhasePauseLevel4" path="vm/gc/phases/pause_level_4" label="GC Phase Pause Level 4" has_thread="true">
    <value type="UINT" field="gcId" label="GC Identifier" relation="GcId"/>
    <value type="STRING" field="name" label="Name" />
  </event>

  <event id="GCPhaseConcurrent" path="vm/gc/phases/concurrent" label="GC Phase Concurrent" has_thread="true">
    <value type="UINT" field="gcId" label="GC Identifier" relation="GcId"/>
    <value type="STRING" field="name" label="Name" />
  </event>

  <event id="AllocationRequiringGC" path="vm/gc/detailed/allocation_requiring_gc" label="Allocation Requiring GC"
         has_thread="true" has_stacktrace="true"  is_instant="true">
    <value type="UINT" field="gcId"  label="Pending GC Identifier" relation="GcId" />
    <value type="BYTES64" field="size" label="Allocation Size" />
  </event>

  <event id="TenuringDistribution" path="vm/gc/detailed/tenuring_distribution" label="Tenuring Distribution"
         is_instant="true">
    <value type="UINT" field="gcId" label="GC Identifier" relation="GcId"/>
    <value type="UINT" field="age" label="Age" />
    <value type="BYTES64" field="size" label="Size" />
  </event>

  <event id="G1HeapRegionTypeChange" path="vm/gc/detailed/g1_heap_region_type_change" label="G1 Heap Region Type Change"
         description="Information about a G1 heap region type change" is_instant="true">
    <value type="UINT" field="index" label="Index" />
    <value type="G1HEAPREGIONTYPE" field="from" label="From" />
    <value type="G1HEAPREGIONTYPE" field="to" label="To" />
    <value type="ADDRESS" field="start" label="Start" />
    <value type="BYTES64" field="used" label="Used" />
  </event>

  <!-- Compiler events -->

  <event id="Compilation" path="vm/compiler/compilation" label="Compilation"
         has_thread="true" is_requestable="false" is_constant="false">
    <value type="METHOD" field="method" label="Java Method"/>
    <value type="UINT" field="compileId" label="Compilation Identifier" relation="CompileId"/>
    <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"/>
  </event>

  <event id="CompilerPhase" path="vm/compiler/phase" label="Compiler Phase"
         has_thread="true" is_requestable="false" is_constant="false">
    <value type="COMPILERPHASETYPE" field="phase" label="Compile Phase"/>
    <value type="UINT" field="compileId" label="Compilation Identifier" relation="CompileId"/>
    <value type="USHORT" field="phaseLevel" label="Phase Level"/>
  </event>

  <event id="CompilationFailure" path="vm/compiler/failure" label="Compilation Failure"
         has_thread="true" is_requestable="false" is_constant="false" is_instant="true">
    <value type="STRING" field="failureMessage" label="Failure Message"/>
    <value type="UINT" field="compileId" label="Compilation Identifier" relation="CompileId"/>
  </event>

  <struct id="CalleeMethod">
    <value type="STRING" field="type" label="Class"/>
    <value type="STRING" field="name" label="Method Name"/>
    <value type="STRING" field="descriptor" label="Method Descriptor"/>
  </struct>

  <event id="CompilerInlining" path="vm/compiler/optimization/inlining" label="Method Inlining"
         has_thread="true" is_instant="true">
    <value type="UINT" field="compileId" label="Compilation Identifier" relation="CompileId"/>
    <value type="METHOD" field="caller" label="Caller Method"/>
    <structvalue type="CalleeMethod" field="callee" label="Callee Method"/>
    <value type="BOOLEAN" field="succeeded" label="Succeeded"/>
    <value type="STRING" field="message" label="Message"/>
    <value type="INTEGER" field="bci" label="Byte Code Index"/>
  </event>

  <!-- Code sweeper events -->

  <event id="SweepCodeCache" path="vm/code_sweeper/sweep" label="Sweep Code Cache"
         has_thread="true" is_requestable="false" is_constant="false">
    <value type="INTEGER" field="sweepId" label="Sweep Identifier" relation="SweepId"/>
    <value type="UINT" field="sweptCount" label="Methods Swept"/>
    <value type="UINT" field="flushedCount" label="Methods Flushed"/>
    <value type="UINT" field="zombifiedCount" label="Methods Zombified"/>
  </event>

  <!-- Code cache events -->

  <event id="CodeCacheStatistics" path="vm/code_cache/stats" label="Code Cache Statistics"
         has_thread="false" is_requestable="true" is_constant="false" is_instant="true">
    <value type="CODEBLOBTYPE" field="codeBlobType" label="Code Heap"/>
    <value type="ADDRESS" field="startAddress" label="Start Address"/>
    <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="INTEGER" field="fullCount" label="Full Count"/>
  </event>

  <event id="CodeCacheConfiguration" path="vm/code_cache/config" label="Code Cache Configuration"
         has_thread="false" is_requestable="true" is_constant="true" is_instant="true">
    <value type="BYTES64" field="initialSize" label="Initial Size"/>
    <value type="BYTES64" field="reservedSize" label="Reserved Size"/>
    <value type="BYTES64" field="expansionSize" label="Expansion size"/>
    <value type="BYTES64" field="minBlockLength" label="Minimum Block Length"/>
    <value type="ADDRESS" field="startAddress" label="Start Address"/>
    <value type="ADDRESS" field="reservedTopAddress" label="Reserved Top"/>
  </event>

  <event id="CodeCacheFull" path="vm/code_cache/full" label="Code Cache Full"
         has_thread="true" is_requestable="false" is_constant="false" is_instant="true">
    <value type="CODEBLOBTYPE" field="codeBlobType" label="Code Heap"/>
    <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="INTEGER" field="fullCount" label="Full Count"/>
  </event>

  <event id="SafepointBegin" path="vm/runtime/safepoint/begin" label="Safepoint Begin"
         description="Safepointing begin" has_thread="true">
    <value type="INTEGER" field="safepointId" label="Safepoint Identifier" relation="SafepointId"/>
    <value type="INTEGER" field="totalThreadCount" label="Total Threads" description="The total number of threads at the start of safe point"/>
    <value type="INTEGER" field="jniCriticalThreadCount" label="JNI Critical Threads" description="The number of threads in JNI critical sections"/>
  </event>

  <event id="SafepointStateSynchronization" path="vm/runtime/safepoint/statesync" label="Safepoint State Synchronization"
         description="Synchronize run state of threads" has_thread="true">
    <value type="INTEGER" field="safepointId" label="Safepoint Identifier" relation="SafepointId"/>
    <value type="INTEGER" field="initialThreadCount" label="Initial Threads" description="The number of threads running at the beginning of state check"/>
    <value type="INTEGER" field="runningThreadCount" label="Running Threads" description="The number of threads still running"/>
    <value type="INTEGER" field="iterations" label="Iterations" description="Number of state check iterations"/>
  </event>

  <event id="SafepointWaitBlocked" path="vm/runtime/safepoint/waitblocked" label="Safepoint Wait Blocked"
         description="Safepointing begin waiting on running threads to block" has_thread="true">
    <value type="INTEGER" field="safepointId" label="Safepoint Identifier" relation="SafepointId"/>
    <value type="INTEGER" field="runningThreadCount" label="Running Threads" description="The number running of threads wait for safe point"/>
  </event>

  <event id="SafepointCleanup" path="vm/runtime/safepoint/cleanup" label="Safepoint Cleanup"
         description="Safepointing begin running cleanup tasks" has_thread="true">
    <value type="INTEGER" field="safepointId" label="Safepoint Identifier" relation="SafepointId"/>
  </event>

  <event id="SafepointCleanupTask" path="vm/runtime/safepoint/cleanuptask" label="Safepoint Cleanup Task"
         description="Safepointing begin running cleanup tasks" has_thread="true">
    <value type="INTEGER" field="safepointId" label="Safepoint Identifier" relation="SafepointId"/>
    <value type="STRING" field="name" label="Task Name" description="The task name"/>
  </event>

  <event id="SafepointEnd" path="vm/runtime/safepoint/end" label="Safepoint End"
         description="Safepointing end" has_thread="true">
    <value type="INTEGER" field="safepointId" label="Safepoint Identifier" relation="SafepointId"/>
  </event>

  <event id="ExecuteVMOperation" path="vm/runtime/execute_vm_operation" label="VM Operation"
         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="THREAD" field="caller" label="Caller" transition="FROM" description="Thread requesting operation. If non-blocking, will be set to 0 indicating thread is unknown"/>
    <value type="INTEGER" field="safepointId" label="Safepoint Identifier" description="The safepoint (if any) under which this operation was completed" relation="SafepointId"/>
  </event>

  <event id="Shutdown" path="vm/runtime/shutdown" label="VM Shutdown"
         description="VM shutting down" has_thread="true" has_stacktrace="true" is_instant="true">
    <value type="STRING" field="reason" label="Reason" description="Reason for VM shutdown"/>
  </event>

  <!-- Allocation events -->
  <event id="ObjectAllocationInNewTLAB" path="java/object_alloc_in_new_TLAB" label="Allocation in new TLAB"
         description="Allocation in new Thread Local Allocation Buffer" has_thread="true" has_stacktrace="true" is_instant="true">
    <value type="CLASS" field="objectClass" label="Object Class" description="Class of allocated object"/>
    <value type="BYTES64" field="allocationSize" label="Allocation Size"/>
    <value type="BYTES64" field="tlabSize" label="TLAB Size"/>
  </event>

  <event id="ObjectAllocationOutsideTLAB" path="java/object_alloc_outside_TLAB" label="Allocation outside TLAB"
         description="Allocation outside Thread Local Allocation Buffers" has_thread="true" has_stacktrace="true" is_instant="true">
    <value type="CLASS" field="objectClass" label="Object Class" description="Class of allocated object"/>
    <value type="BYTES64" field="allocationSize" label="Allocation Size"/>
  </event>
  
   <event id="OldObjectSample" path="java/old_object" label="Old Object Sample"
       description="A potential memory leak" has_stacktrace="true" has_thread="true" is_instant="true" cutoff="true">
    <value type="TICKS" field="allocationTime" label="Allocation Time"/>
    <value type="OLDOBJECT" field="object" label="Object"/>
    <value type="INTEGER" field="arrayElements" label="Array Elements" description="If the object is an array, the number of elements, or -1 if it is not an array"/>
    <value type="OLDOBJECTGCROOT" field="root" label="GC Root"/>
  </event>

  <event id="DumpReason" path="flight_recorder/dump_reason" label="Recording Reason"
         description="Who requested the recording and why" is_instant="true">
    <value type="STRING" field="reason" label="Reason" description="Reason for writing recording data to disk"/>
    <value type="INTEGER" field="recordingId" label="Recording Id"  description="Id of the recording that triggered the dump, or -1 if it was not related to a recording"/>
  </event>

  <event id="DataLoss" path="flight_recorder/data_loss" label="Data Loss"
         description="Data could not be copied out from a buffer, typically because of contention" is_instant="true">
    <value type="BYTES" field="amount" label="Amount" description="Amount lost data"/>
    <value type="BYTES" field="total" label="Total" description="Total lost amount for thread"/>
  </event>
  
  <event id="JVMInformation" path="vm/info" label="JVM Information"
         description="Description of JVM and the Java application"
         is_requestable="true" is_constant="true">
    <value type="STRING" field="jvmName" label="JVM Name"/>
    <value type="STRING" field="jvmVersion" label="JVM Version"/>
    <value type="STRING" field="jvmArguments" label="JVM Command Line Arguments"/>
    <value type="STRING" field="jvmFlags" label="JVM Settings File Arguments"/>
    <value type="STRING" field="javaArguments" label="Java Application Arguments"/>
    <value type="EPOCHMILLIS" field="jvmStartTime" label="JVM Start Time"/>
  </event>

  <event id="OSInformation" path="os/information" label="OS Information"
         is_requestable="true" is_constant="true">
    <value type="STRING" field="osVersion" label="OS Version"/>
  </event>

  <event id="InitialEnvironmentVariable" path="os/initial_environment_variable" label="Initial Environment Variable"
         is_requestable="true" is_constant="true">
    <value type="STRING" field="key" label="Key"/>
    <value type="STRING" field="value" label="Value"/>
  </event>

  <event id="SystemProcess" path="os/system_process" label="System Process"
         is_requestable="true" is_constant="true">
    <value type="STRING" field="pid" label="Process Identifier"/>
    <value type="STRING" field="commandLine" label="Command Line"/>
  </event>

  <event id="CPUInformation" path="os/processor/cpu_information" label="CPU Information"
         is_requestable="true" is_constant="true">
    <value type="STRING" field="cpu" label="Type"/>
    <value type="STRING" field="description" label="Description"/>
    <value type="UINT" field="sockets" label="Sockets"/>
    <value type="UINT" field="cores" label="Cores"/>
    <value type="UINT" field="hwThreads" label="Hardware Threads"/>
  </event>

  <event id="CPUTimeStampCounter" path="os/processor/cpu_tsc" label="CPU Time Stamp Counter"
         is_requestable="true" is_constant="true">
    <value type="BOOLEAN" field="fastTimeEnabled" label="Fast Time"/>
    <value type="BOOLEAN" field="fastTimeAutoEnabled" label="Trusted Platform"/>
    <value type="LONG" field="osFrequency" label="OS Frequency Per Second"/>
    <value type="LONG" field="fastTimeFrequency" label="Fast Time Frequency per Second"/>
  </event>

  <event id="CPULoad" path="os/processor/cpu_load" label="CPU Load"
         description="OS CPU Load" is_requestable="true">
  <value type="PERCENTAGE" field="jvmUser" label="JVM User"/>
  <value type="PERCENTAGE" field="jvmSystem" label="JVM System"/>
  <value type="PERCENTAGE" field="machineTotal" label="Machine Total"/>
  </event>

  <event id="ThreadContextSwitchRate" path="os/processor/context_switch_rate"
         label="Thread Context Switch Rate" is_requestable="true">
  <value type="FLOAT" field="switchRate" label="Switch Rate" description="Number of context switches per second"/>
  </event>

  <event id="PhysicalMemory" path="os/memory/physical_memory" label="Physical Memory"
         description="OS Physical Memory" is_requestable="true">
    <value type="BYTES64" field="totalSize" label="Total Size"
        description="Total amount of physical memory available to OS"/>
    <value type="BYTES64" field="usedSize" label="Used Size"
        description="Total amount of physical memory in use"/>
  </event>

  <event id="ExecutionSample" path="vm/prof/execution_sample" label="Method Profiling Sample"
         description="Snapshot of a threads state"
         is_requestable="true">
    <value type="THREAD" field="sampledThread" label="Thread"/>
    <value type="STACKTRACE" field="stackTrace" label="Stack Trace"/>
    <value type="THREADSTATE" field="state" label="Thread State"/>
  </event>
  
  <event id="NativeMethodSample" path="vm/prof/native_method_sample" label="Method Profiling Sample Native"
         description="Snapshot of a threads state when in native"
         is_requestable="true" ignore_check="true">
    <value type="THREAD" field="sampledThread" label="Thread"/>
    <value type="STACKTRACE" field="stackTrace" label="Stack Trace"/>
    <value type="THREADSTATE" field="state" label="Thread State"/>
  </event>
  
  <event id="ThreadDump" path="vm/runtime/thread_dump" label="Thread Dump"
         is_requestable="true">
    <value type="STRING" field="result" label="Thread Dump"/>
  </event>

  <event id="NativeLibrary" path="vm/runtime/native_library" label="Native Library" is_requestable="true">
    <value type="STRING" field="name" label="Name"/>
    <value type="ADDRESS" field="baseAddress" label="Base Address" description="Starting address of the module"/>
    <value type="ADDRESS" field="topAddress" label="Top Address" description="Ending address of the module"/>
  </event>

  <event id="IntFlag" path="vm/flag/int" is_requestable="true" label="Int Flag"
         is_constant="true">
    <value type="STRING" field="name" label="Name" />
    <value type="INTEGER" field="value" label="Value" />
    <value type="FLAGVALUEORIGIN" field="origin" label="Origin" />
  </event>

  <event id="UnsignedIntFlag" path="vm/flag/uint" is_requestable="true" label="Unsigned Int Flag"
         is_constant="true">
    <value type="STRING" field="name" label="Name" />
    <value type="UINT" field="value" label="Value" />
    <value type="FLAGVALUEORIGIN" field="origin" label="Origin" />
  </event>

  <event id="LongFlag" path="vm/flag/long" is_requestable="true" label="Long Flag"
         is_constant="true">
    <value type="STRING" field="name" label="Name" />
    <value type="LONG" field="value" label="Value" />
    <value type="FLAGVALUEORIGIN" field="origin" label="Origin" />
  </event>

  <event id="UnsignedLongFlag" path="vm/flag/ulong" is_requestable="true" label="Unsigned Long Flag"
         is_constant="true">
    <value type="STRING" field="name" label="Name" />
    <value type="ULONG" field="value" label="Value" />
    <value type="FLAGVALUEORIGIN" field="origin" label="Origin" />
  </event>

  <event id="DoubleFlag" path="vm/flag/double" is_requestable="true" label="Double Flag"
         is_constant="true">
    <value type="STRING" field="name" label="Name" />
    <value type="DOUBLE" field="value" label="Value" />
    <value type="FLAGVALUEORIGIN" field="origin" label="Origin" />
  </event>

  <event id="BooleanFlag" path="vm/flag/boolean" is_requestable="true" label="Boolean Flag"
         is_constant="true">
    <value type="STRING" field="name" label="Name" />
    <value type="BOOLEAN" field="value" label="Value" />
    <value type="FLAGVALUEORIGIN" field="origin" label="Origin" />
  </event>

  <event id="StringFlag" path="vm/flag/string" is_requestable="true" label="String Flag"
         is_constant="true">
    <value type="STRING" field="name" label="Name" />
    <value type="STRING" field="value" label="Value" />
    <value type="FLAGVALUEORIGIN" field="origin" label="Origin" />
  </event>

  <event id="ObjectCount" path="vm/gc/detailed/object_count" is_instant="true"
         is_requestable="true" label="Object Count">
    <value type="UINT" field="gcId"  label="GC Identifier" relation="GcId" />
    <value type="CLASS" field="objectClass" label="Object Class" />
    <value type="LONG" field="count" label="Count" />
    <value type="BYTES64" field="totalSize" label="Total Size" />
  </event>


  <event id="GCConfiguration" path="vm/gc/configuration/gc" label="GC Configuration"
         description="The configuration of the garbage collector" is_requestable="true" is_constant="true">
    <value type="GCNAME" field="youngCollector" label="Young Garbage Collector" description="The garbage collector used for the young generation"/>
    <value type="GCNAME" field="oldCollector" label="Old Garbage Collector" description="The garbage collector used for the old generation"/>
    <value type="UINT" field="parallelGCThreads" label="Parallel GC Threads" description="Number of parallel threads to use for garbage collection"/>
    <value type="UINT" field="concurrentGCThreads" label="Concurrent GC Threads" description="Number of concurrent threads to use for garbage collection"/>
    <value type="BOOLEAN" field="usesDynamicGCThreads" label="Uses Dynamic GC Threads" description="Whether a dynamic number of GC threads are used or not" />
    <value type="BOOLEAN" field="isExplicitGCConcurrent" label="Concurrent Explicit GC" description="Whether System.gc() is concurrent or not"/>
    <value type="BOOLEAN" field="isExplicitGCDisabled" label="Disabled Explicit GC" description="Whether System.gc() will cause a garbage collection or not"/>
    <value type="MILLIS" field="pauseTarget" label="Pause Target" description="Target for GC pauses"/>
    <value type="UINT" field="gcTimeRatio" label="GC Time Ratio" description="Target for runtime vs garbage collection time"/>
  </event>

  <event id="GCSurvivorConfiguration" path="vm/gc/configuration/survivor" label="GC Survivor Configuration"
         description="The configuration of the survivors of garbage collection" is_requestable="true" is_constant="true">
    <value type="UBYTE" field="maxTenuringThreshold" label="Maximum Tenuring Threshold" description="Upper limit for the age of how old objects to keep in the survivor area" />
    <value type="UBYTE" field="initialTenuringThreshold" label="Initial Tenuring Threshold" description="Initial age limit for how old objects to keep in survivor area" />
  </event>

  <event id="GCTLABConfiguration" path="vm/gc/configuration/tlab" label="TLAB Configuration"
         description="The configuration of the Thread Local Allocation Buffers (TLABs)" is_requestable="true" is_constant="true">
    <value type="BOOLEAN" field="usesTLABs" label="TLABs Used" description="If Thread Local Allocation Buffers (TLABs) are in use"/>
    <value type="BYTES64" field="minTLABSize" label="Minimum TLAB Size" />
    <value type="BYTES64" field="tlabRefillWasteLimit" label="TLAB Refill Waste Limit"/>
  </event>

  <event id="GCHeapConfiguration" path="vm/gc/configuration/heap" label="GC Heap Configuration"
         description="The configuration of the garbage collected heap" is_requestable="true" is_constant="true">
    <value type="BYTES64" field="minSize" label="Minimum Heap Size" />
    <value type="BYTES64" field="maxSize" label="Maximum Heap Size" />
    <value type="BYTES64" field="initialSize" label="Initial Heap Size" />
    <value type="BOOLEAN" field="usesCompressedOops" label="If Compressed Oops Are Used" description="If compressed Oops (Ordinary Object Pointers) are enabled" />
    <value type="NARROWOOPMODE" field="compressedOopsMode" label="Compressed Oops Mode" description="The kind of compressed oops being used" />
    <value type="BYTES64" field="objectAlignment" label="Object Alignment" description="Object alignment (in bytes) on the heap" />
    <value type="UBYTE" field="heapAddressBits" label="Heap Address Size" description="Heap Address Size (in bits)" />
  </event>

  <event id="YoungGenerationConfiguration" path="vm/gc/configuration/young_generation" label="Young Generation Configuration"
         description="The configuration of the young generation of the garbage collected heap" is_requestable="true" is_constant="true">
    <value type="BYTES64" field="minSize" label="Minimum Young Generation Size" />
    <value type="BYTES64" field="maxSize" label="Maximum Young Generation Size" />
    <value type="UINT" field="newRatio" label="New Ratio" description="The size of the young generation relative to the tenured generation" />
  </event>

  <event id="ThreadCPULoad" path="os/processor/thread_cpu_load" label="Thread CPU Load"
         is_requestable="true" has_thread="true">
    <value type="PERCENTAGE" field="user" label="User Mode CPU Load" description="User mode thread CPU load"/>
    <value type="PERCENTAGE" field="system" label="System Mode CPU Load" description="System mode thread CPU load"/>
  </event>

  <event id="ThreadAllocationStatistics" path="java/statistics/thread_allocation" label="Thread Allocation Statistics"
         is_requestable="true">
    <value type="BYTES64" field="allocated" label="Allocated" description="Approximate number of bytes allocated since thread start"/>
    <value type="THREAD" field="thread" label="Thread"/>
  </event>

  <event id="InitialSystemProperty" path="vm/initial_system_property" label="Initial System Property"
         description="System Property at JVM start" is_requestable="true" is_constant="true">
    <value type="STRING" field="key" label="Key"/>
    <value type="STRING" field="value" label="Value"/>
  </event>

  <event id="JavaThreadStatistics" path="java/statistics/threads" label="Java Thread Statistics"
         is_requestable="true">
    <value type="LONG" field="activeCount" label="Active Threads"  description="Number of live active threads including both daemon and non-daemon threads"/>
    <value type="LONG" field="daemonCount" label="Daemon Threads" description="Number of live daemon threads"/>
    <value type="LONG" field="accumulatedCount" label="Accumulated Threads" description="Number of threads created and also started since JVM start"/>
    <value type="LONG" field="peakCount" label="Peak Threads" description="Peak live thread count since JVM start or when peak count was reset"/>
  </event>

  <event id="ClassLoadingStatistics" path="java/statistics/class_loading" label="Class Loading Statistics"
         is_requestable="true">
    <value type="LONG" field="loadedClassCount" label="Loaded Class Count"  description="Number of classes loaded since JVM start"/>
    <value type="LONG" field="unloadedClassCount" label="Unloaded Class Count" description="Number of classes unloaded since JVM start"/>
  </event>

  <event id="ClassLoaderStatistics" path="java/statistics/class_loaders" label="Class Loader Statistics"
         is_requestable="true">
    <value type="CLASSLOADER" field="classLoader" label="Class Loader"/>
    <value type="CLASSLOADER" field="parentClassLoader" label="Parent Class Loader"/>
    <value type="ADDRESS" field="classLoaderData" label="ClassLoaderData pointer" description="Pointer to the ClassLoaderData structure in the JVM"/>
    <value type="LONG" field="classCount" label="Classes" description="Number of loaded classes"/>
    <value type="BYTES64" field="chunkSize" label="Total Chunk Size" description="Total size of all allocated metaspace chunks (each chunk has several blocks)"/>
    <value type="BYTES64" field="blockSize" label="Total Block Size" description="Total size of all allocated metaspace blocks (each chunk has several blocks)"/>
    <value type="LONG" field="anonymousClassCount" label="Unsafe Anonymous Classes" description="Number of loaded classes to support invokedynamic"/>
    <value type="BYTES64" field="anonymousChunkSize" label="Total Unsafe Anonymous Classes Chunk Size" description="Total size of all allocated metaspace chunks for anonymous classes (each chunk has several blocks)"/>
    <value type="BYTES64" field="anonymousBlockSize" label="Total Unsafe Anonymous Classes Block Size" description="Total size of all allocated metaspace blocks for anonymous classes (each chunk has several blocks)"/>
  </event>

  <event id="CompilerStatistics" path="vm/compiler/stats" label="Compiler Statistics"
         has_thread="false" is_requestable="true" is_constant="false" is_instant="true">
    <value type="INTEGER" field="compileCount" label="Compiled Methods"/>
    <value type="INTEGER" field="bailoutCount" label="Bailouts"/>
    <value type="INTEGER" field="invalidatedCount" label="Invalidated Compilations"/>
    <value type="INTEGER" field="osrCompileCount" label="OSR Compilations"/>
    <value type="INTEGER" field="standardCompileCount" label="Standard Compilations"/>
    <value type="BYTES" field="osrBytesCompiled" label="OSR Bytes Compiled"/>
    <value type="BYTES" field="standardBytesCompiled" label="Standard Bytes Compiled"/>
    <value type="BYTES" field="nmetodsSize" label="Compilation Resulting Size"/>
    <value type="BYTES" field="nmetodCodeSize" label="Compilation Resulting Code Size"/>
    <value type="MILLIS" field="peakTimeSpent" label="Peak Time"/>
    <value type="MILLIS" field="totalTimeSpent" label="Total time"/>
  </event>

  <event id="CompilerConfiguration" path="vm/compiler/config" label="Compiler Configuration"
         has_thread="false" is_requestable="true" is_constant="true" is_instant="true">
    <value type="INTEGER" field="threadCount" label="Thread Count"/>
    <value type="BOOLEAN" field="tieredCompilation" label="Tiered Compilation"/>
  </event>

  <event id="CodeSweeperConfiguration" path="vm/code_sweeper/config" label="Code Sweeper Configuration"
         has_thread="false" is_requestable="true" is_constant="true" is_instant="true">
    <value type="BOOLEAN" field="sweeperEnabled" label="Code Sweeper Enabled"/>
    <value type="BOOLEAN" field="flushingEnabled" label="Code Cache Flushing Enabled"/>
  </event>

</events>