1 /*
   2  * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
   3  *
   4  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   5  *
   6  * The contents of this file are subject to the terms of either the Universal Permissive License
   7  * v 1.0 as shown at http://oss.oracle.com/licenses/upl
   8  *
   9  * or the following license:
  10  *
  11  * Redistribution and use in source and binary forms, with or without modification, are permitted
  12  * provided that the following conditions are met:
  13  *
  14  * 1. Redistributions of source code must retain the above copyright notice, this list of conditions
  15  * and the following disclaimer.
  16  *
  17  * 2. Redistributions in binary form must reproduce the above copyright notice, this list of
  18  * conditions and the following disclaimer in the documentation and/or other materials provided with
  19  * the distribution.
  20  *
  21  * 3. Neither the name of the copyright holder nor the names of its contributors may be used to
  22  * endorse or promote products derived from this software without specific prior written permission.
  23  *
  24  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
  25  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
  26  * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
  27  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  28  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  29  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
  30  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
  31  * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  32  */
  33 package org.openjdk.jmc.flightrecorder.jdk;
  34 
  35 import static org.openjdk.jmc.common.item.ItemQueryBuilder.fromWhere;
  36 import static org.openjdk.jmc.flightrecorder.JfrAttributes.DURATION;
  37 import static org.openjdk.jmc.flightrecorder.JfrAttributes.END_TIME;
  38 import static org.openjdk.jmc.flightrecorder.JfrAttributes.EVENT_THREAD;
  39 import static org.openjdk.jmc.flightrecorder.JfrAttributes.FLR_DATA_LOST;
  40 import static org.openjdk.jmc.flightrecorder.JfrAttributes.START_TIME;
  41 import static org.openjdk.jmc.flightrecorder.jdk.JdkAggregators.ALLOC_INSIDE_TLAB_AVG;
  42 import static org.openjdk.jmc.flightrecorder.jdk.JdkAggregators.ALLOC_INSIDE_TLAB_SUM;
  43 import static org.openjdk.jmc.flightrecorder.jdk.JdkAggregators.JAVA_ARGUMENTS;
  44 import static org.openjdk.jmc.flightrecorder.jdk.JdkAggregators.JVM_ARGUMENTS;
  45 import static org.openjdk.jmc.flightrecorder.jdk.JdkAggregators.JVM_NAME;
  46 import static org.openjdk.jmc.flightrecorder.jdk.JdkAggregators.JVM_START_TIME;
  47 import static org.openjdk.jmc.flightrecorder.jdk.JdkAggregators.JVM_VERSION;
  48 import static org.openjdk.jmc.flightrecorder.jdk.JdkAggregators.OBJECT_COUNT_MAX_INSTANCES;
  49 import static org.openjdk.jmc.flightrecorder.jdk.JdkAggregators.OBJECT_COUNT_MAX_SIZE;
  50 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.ADAPTORS;
  51 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.ALLOCATION_CLASS;
  52 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.BLOCKING;
  53 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.CALLER;
  54 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.CLASSLOADER_LOADED_COUNT;
  55 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.CLASSLOADER_UNLOADED_COUNT;
  56 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.CLASS_DEFINED;
  57 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.CLASS_DEFINING_CLASSLOADER;
  58 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.CLASS_INITIATING_CLASSLOADER;
  59 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.CLASS_LOADED;
  60 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.CLASS_UNLOADED;
  61 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.COMMAND_LINE;
  62 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.COMPILER_CODE_SIZE;
  63 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.COMPILER_COMPILATION_ID;
  64 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.COMPILER_FAILED_MESSAGE;
  65 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.COMPILER_INLINED_SIZE;
  66 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.COMPILER_METHOD;
  67 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.COMPILER_OSR_COUNT;
  68 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.COMPILER_STANDARD_COUNT;
  69 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.ENTRIES;
  70 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.ENVIRONMENT_KEY;
  71 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.ENVIRONMENT_VALUE;
  72 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.EXCEPTION_MESSAGE;
  73 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.EXCEPTION_THROWABLES_COUNT;
  74 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.EXCEPTION_THROWNCLASS;
  75 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.GC_CAUSE;
  76 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.GC_HEAPSPACE_COMMITTED;
  77 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.GC_HEAPSPACE_RESERVED;
  78 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.GC_ID;
  79 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.GC_LONGEST_PAUSE;
  80 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.GC_METASPACE_USED;
  81 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.GC_SUM_OF_PAUSES;
  82 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.HEAP_USED;
  83 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.IO_ADDRESS;
  84 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.IO_FILE_BYTES_READ;
  85 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.IO_FILE_BYTES_WRITTEN;
  86 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.IO_PATH;
  87 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.IO_PORT;
  88 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.IO_SOCKET_BYTES_READ;
  89 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.IO_SOCKET_BYTES_WRITTEN;
  90 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.IO_TIMEOUT;
  91 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.JVM_SYSTEM;
  92 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.JVM_TOTAL;
  93 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.MACHINE_TOTAL;
  94 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.METHODS;
  95 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.NON_NMETHODS_ADAPTORS;
  96 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.NON_NMETHODS_ENTRIES;
  97 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.NON_NMETHODS_UNALLOCATED;
  98 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.NON_PROFILED_METHODS;
  99 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.NON_PROFILED_NMETHODS_ENTRIES;
 100 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.NON_PROFILED_NMETHODS_UNALLOCATED;
 101 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.OBJECT_CLASS;
 102 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.OPERATION;
 103 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.OS_MEMORY_TOTAL;
 104 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.OS_MEMORY_USED;
 105 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.PID;
 106 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.PROFILED_ENTRIES;
 107 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.PROFILED_METHODS;
 108 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.PROFILED_UNALLOCATED;
 109 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.RECORDING_DESTINATION;
 110 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.RECORDING_DURATION;
 111 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.RECORDING_ID;
 112 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.RECORDING_MAX_AGE;
 113 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.RECORDING_MAX_SIZE;
 114 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.RECORDING_NAME;
 115 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.RECORDING_START;
 116 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.REC_SETTING_FOR;
 117 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.REC_SETTING_NAME;
 118 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.REC_SETTING_VALUE;
 119 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.RESERVED_SIZE;
 120 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.SAFEPOINT;
 121 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.SWEEP_FRACTION_INDEX;
 122 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.SWEEP_INDEX;
 123 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.SWEEP_METHOD_FLUSHED;
 124 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.SWEEP_METHOD_RECLAIMED;
 125 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.SWEEP_METHOD_SWEPT;
 126 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.SWEEP_METHOD_ZOMBIFIED;
 127 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.THREAD_DUMP_RESULT;
 128 import static org.openjdk.jmc.flightrecorder.jdk.JdkAttributes.UNALLOCATED;
 129 
 130 import org.openjdk.jmc.common.item.Aggregators;
 131 import org.openjdk.jmc.common.item.IItemQuery;
 132 import org.openjdk.jmc.common.item.ItemFilters;
 133 
 134 /**
 135  * Item queries based on JDK flight recorder data.
 136  */
 137 public final class JdkQueries {
 138 
 139         public static final IItemQuery ALLOC_INSIDE_TLAB_BY_CLASS = fromWhere(JdkFilters.ALLOC_INSIDE_TLAB)
 140                         .select(ALLOC_INSIDE_TLAB_AVG).select(ALLOC_INSIDE_TLAB_SUM).groupBy(ALLOCATION_CLASS).build();
 141         public static final IItemQuery ALLOC_INSIDE_TLAB_BY_THREAD = fromWhere(JdkFilters.ALLOC_INSIDE_TLAB)
 142                         .select(ALLOC_INSIDE_TLAB_AVG).select(ALLOC_INSIDE_TLAB_SUM).groupBy(EVENT_THREAD).build();
 143         public static final IItemQuery JFR_DATA_LOST = fromWhere(JdkFilters.JFR_DATA_LOST)
 144                         .select(END_TIME, EVENT_THREAD, FLR_DATA_LOST).build();
 145         public static final IItemQuery CLASS_LOAD = fromWhere(JdkFilters.CLASS_LOAD)
 146                         .select(CLASS_LOADED, CLASS_DEFINING_CLASSLOADER, CLASS_INITIATING_CLASSLOADER, EVENT_THREAD, DURATION)
 147                         .build();
 148         public static final IItemQuery CLASS_DEFINE = fromWhere(JdkFilters.CLASS_DEFINE)
 149                         .select(CLASS_DEFINED, CLASS_DEFINING_CLASSLOADER).build();
 150         public static final IItemQuery CLASS_LOAD_STATISTICS = fromWhere(JdkFilters.CLASS_LOAD_STATISTICS)
 151                         .select(CLASSLOADER_LOADED_COUNT, CLASSLOADER_UNLOADED_COUNT).build();
 152         public static final IItemQuery CLASS_UNLOAD = fromWhere(JdkFilters.CLASS_UNLOAD)
 153                         .select(CLASS_UNLOADED, CLASS_DEFINING_CLASSLOADER).build();
 154         public static final IItemQuery CODE_CACHE_ENTRIES = fromWhere(JdkFilters.CODE_CACHE_STATISTICS)
 155                         .select(ENTRIES, METHODS, ADAPTORS).build();
 156         public static final IItemQuery CODE_CACHE_ENTRIES_SEGMENTED = fromWhere(JdkFilters.CODE_CACHE_STATISTICS)
 157                         .select(PROFILED_ENTRIES, NON_PROFILED_NMETHODS_ENTRIES, NON_NMETHODS_ENTRIES).build();
 158         public static final IItemQuery CODE_CACHE_ADAPTORS_SEGMENTED = fromWhere(JdkFilters.CODE_CACHE_STATISTICS)
 159                         .select(NON_NMETHODS_ADAPTORS).build();
 160         public static final IItemQuery CODE_CACHE_METHODS_SEGMENTED = fromWhere(JdkFilters.CODE_CACHE_STATISTICS)
 161                         .select(PROFILED_METHODS, NON_PROFILED_METHODS).build();
 162         public static final IItemQuery CODE_CACHE_FULL = fromWhere(JdkFilters.CODE_CACHE_FULL)
 163                         .select(ENTRIES, METHODS, ADAPTORS).build();
 164         public static final IItemQuery CODE_CACHE_UNALLOCATED = fromWhere(JdkFilters.CODE_CACHE_STATISTICS)
 165                         .select(UNALLOCATED).build();
 166         public static final IItemQuery CODE_CACHE_UNALLOCATED_SEGMENTED = fromWhere(JdkFilters.CODE_CACHE_STATISTICS)
 167                         .select(PROFILED_UNALLOCATED, NON_PROFILED_NMETHODS_UNALLOCATED, NON_NMETHODS_UNALLOCATED).build();
 168         public static final IItemQuery CODE_CACHE_RESERVED = fromWhere(JdkFilters.CODE_CACHE_CONFIGURATION)
 169                         .select(RESERVED_SIZE).build();
 170         public static final IItemQuery CODE_CACHE_ALLOCATION = fromWhere(
 171                         ItemFilters.or(JdkFilters.CODE_CACHE_STATISTICS, JdkFilters.CODE_CACHE_CONFIGURATION))
 172                                         .select(RESERVED_SIZE, UNALLOCATED).build();
 173         public static final IItemQuery CODE_SWEEPS = fromWhere(JdkFilters.SWEEP_CODE_CACHE)
 174                         .select(SWEEP_METHOD_FLUSHED, SWEEP_METHOD_RECLAIMED, SWEEP_METHOD_SWEPT, SWEEP_METHOD_ZOMBIFIED).build();
 175         public static final IItemQuery COMPILATION = fromWhere(JdkFilters.COMPILATION)
 176                         .select(COMPILER_COMPILATION_ID, COMPILER_METHOD, DURATION, COMPILER_CODE_SIZE, COMPILER_INLINED_SIZE)
 177                         .build();
 178         public static final IItemQuery COMPILER_FAILURE = fromWhere(JdkFilters.COMPILER_FAILURE)
 179                         .select(COMPILER_COMPILATION_ID, COMPILER_FAILED_MESSAGE).build();
 180         public static final IItemQuery COMPILER_STATS = fromWhere(JdkFilters.COMPILER_STATS)
 181                         .select(COMPILER_STANDARD_COUNT, COMPILER_OSR_COUNT).build();
 182         public static final IItemQuery CONCURRENT_MODE_FAILURE = fromWhere(JdkFilters.CONCURRENT_MODE_FAILURE)
 183                         .select(GC_ID, END_TIME).build();
 184         public static final IItemQuery CPU_USAGE_SIMPLE_QUERY = fromWhere(JdkFilters.CPU_LOAD)
 185                         .select(MACHINE_TOTAL, JVM_TOTAL).build();
 186         public static final IItemQuery CPU_USAGE_DETAILED_GRAPH_QUERY = fromWhere(JdkFilters.CPU_LOAD)
 187                         .select(MACHINE_TOTAL, JVM_TOTAL, JVM_SYSTEM).build();
 188         public static final IItemQuery ENVIRONMENT_VARIABLE = fromWhere(JdkFilters.ENVIRONMENT_VARIABLE)
 189                         .select(ENVIRONMENT_KEY, ENVIRONMENT_VALUE).build();
 190         public static final IItemQuery ERRORS = fromWhere(JdkFilters.ERRORS)
 191                         .select(EXCEPTION_THROWNCLASS, EVENT_THREAD, EXCEPTION_MESSAGE).build();
 192         public static final IItemQuery EXECUTION_SAMPLE = fromWhere(JdkFilters.EXECUTION_SAMPLE)
 193                         .select(END_TIME, EVENT_THREAD).build();
 194         public static final IItemQuery FILE_READ = fromWhere(JdkFilters.FILE_READ)
 195                         .select(DURATION, IO_PATH, EVENT_THREAD, IO_FILE_BYTES_READ).build();
 196         public static final IItemQuery FILE_WRITE = fromWhere(JdkFilters.FILE_WRITE)
 197                         .select(DURATION, IO_PATH, EVENT_THREAD, IO_FILE_BYTES_WRITTEN).build();
 198         public static final IItemQuery GARBAGE_COLLECTION = fromWhere(JdkFilters.GARBAGE_COLLECTION)
 199                         .select(GC_ID, GC_CAUSE, GC_LONGEST_PAUSE, GC_SUM_OF_PAUSES).build();
 200         public static final IItemQuery GC_PAUSE = fromWhere(JdkFilters.GC_PAUSE).select(GC_ID, DURATION).build();
 201         public static final IItemQuery HEAP_SUMMARY_AFTER_GC = fromWhere(JdkFilters.HEAP_SUMMARY_AFTER_GC)
 202                         .select(START_TIME).select(HEAP_USED).build();
 203         public static final IItemQuery HEAP_SUMMARY = fromWhere(JdkFilters.HEAP_SUMMARY)
 204                         .select(HEAP_USED, GC_HEAPSPACE_COMMITTED, GC_HEAPSPACE_RESERVED).build();
 205         public static final IItemQuery METASPACE_SUMMARY_AFTER_GC = fromWhere(JdkFilters.METASPACE_SUMMARY_AFTER_GC)
 206                         .select(GC_ID, END_TIME, GC_METASPACE_USED).build();
 207         public static final IItemQuery NATIVE_LIBRARIES = fromWhere(ItemFilters.type(JdkTypeIDs.NATIVE_LIBRARY))
 208                         .select(JdkAttributes.NATIVE_LIBRARY_NAME, JdkAttributes.BASE_ADDRESS, JdkAttributes.TOP_ADDRESS)
 209                         .select(Aggregators.count()).build();
 210         public static final IItemQuery NO_RMI_SOCKET_READ = fromWhere(JdkFilters.NO_RMI_SOCKET_READ)
 211                         .select(DURATION, IO_ADDRESS, IO_PORT, IO_TIMEOUT, EVENT_THREAD, IO_SOCKET_BYTES_READ).build();
 212         public static final IItemQuery NO_RMI_SOCKET_WRITE = fromWhere(JdkFilters.NO_RMI_SOCKET_WRITE)
 213                         .select(DURATION, IO_ADDRESS, IO_PORT, EVENT_THREAD, IO_SOCKET_BYTES_WRITTEN).build();
 214         public static final IItemQuery OBJECT_COUNT = fromWhere(JdkFilters.OBJECT_COUNT).select(OBJECT_COUNT_MAX_INSTANCES)
 215                         .select(OBJECT_COUNT_MAX_SIZE).groupBy(OBJECT_CLASS).build();
 216         public static final IItemQuery OS_MEMORY_SUMMARY = fromWhere(JdkFilters.OS_MEMORY_SUMMARY)
 217                         .select(OS_MEMORY_USED, OS_MEMORY_TOTAL).build();
 218         public static final IItemQuery PROCESSES = fromWhere(JdkFilters.PROCESSES).select(PID, COMMAND_LINE, END_TIME)
 219                         .groupBy(PID).build();
 220         public static final IItemQuery RECORDING_SETTINGS = fromWhere(JdkFilters.RECORDING_SETTING)
 221                         .select(REC_SETTING_FOR, REC_SETTING_NAME, REC_SETTING_VALUE, END_TIME).build();
 222         public static final IItemQuery RECORDINGS = fromWhere(JdkFilters.RECORDINGS).select(RECORDING_NAME, RECORDING_ID,
 223                         RECORDING_START, RECORDING_DURATION, RECORDING_MAX_SIZE, RECORDING_MAX_AGE, RECORDING_DESTINATION).build();
 224         public static final IItemQuery SWEEP_CODE_CACHE = fromWhere(JdkFilters.SWEEP_CODE_CACHE)
 225                         .select(DURATION, SWEEP_FRACTION_INDEX, SWEEP_INDEX, SWEEP_METHOD_FLUSHED, SWEEP_METHOD_RECLAIMED,
 226                                         SWEEP_METHOD_SWEPT, SWEEP_METHOD_ZOMBIFIED)
 227                         .build();
 228         public static final IItemQuery SYSTEM_PROPERTIES = fromWhere(JdkFilters.SYSTEM_PROPERTIES)
 229                         .select(ENVIRONMENT_KEY, ENVIRONMENT_VALUE).build();
 230         public static final IItemQuery THREAD_DUMP = fromWhere(JdkFilters.THREAD_DUMP).select(END_TIME, THREAD_DUMP_RESULT)
 231                         .build();
 232         public static final IItemQuery THROWABLES_STATISTICS = fromWhere(JdkFilters.THROWABLES_STATISTICS)
 233                         .select(EXCEPTION_THROWABLES_COUNT, END_TIME).build();
 234         public static final IItemQuery VM_INFO = fromWhere(JdkFilters.VM_INFO)
 235                         .select(JVM_NAME, JVM_VERSION, JVM_START_TIME, JAVA_ARGUMENTS, JVM_ARGUMENTS).build();
 236         public static final IItemQuery VM_OPERATIONS = fromWhere(JdkFilters.VM_OPERATIONS)
 237                         .select(DURATION, OPERATION, BLOCKING, SAFEPOINT, EVENT_THREAD, CALLER).build();
 238         public static final IItemQuery VM_OPERATIONS_BLOCKING = fromWhere(JdkFilters.VM_OPERATIONS_BLOCKING_OR_SAFEPOINT)
 239                         .select(DURATION, OPERATION, BLOCKING, SAFEPOINT, EVENT_THREAD, CALLER).build();
 240 
 241 }