< prev index next >

test/lib/jdk/test/lib/jfr/GCHelper.java

Print this page




  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 package jdk.test.lib.jfr;
  26 
  27 import static jdk.test.lib.Asserts.assertEquals;
  28 import static jdk.test.lib.Asserts.assertNotEquals;
  29 import static jdk.test.lib.Asserts.assertNotNull;
  30 import static jdk.test.lib.Asserts.assertNull;
  31 import static jdk.test.lib.Asserts.fail;
  32 
  33 import java.io.FileOutputStream;
  34 import java.io.IOException;
  35 import java.io.PrintStream;
  36 import java.lang.management.GarbageCollectorMXBean;
  37 import java.lang.management.ManagementFactory;


  38 import java.time.Instant;
  39 import java.util.ArrayList;
  40 import java.util.Arrays;
  41 import java.util.Collections;
  42 import java.util.HashMap;
  43 import java.util.HashSet;
  44 import java.util.List;
  45 import java.util.Map;
  46 import java.util.Set;
  47 import java.util.Stack;
  48 
  49 import jdk.jfr.ValueDescriptor;
  50 import jdk.jfr.consumer.RecordedEvent;
  51 
  52 /**
  53  * Mixed helper classes to test GC events.
  54  */
  55 public class GCHelper {
  56     public static final String event_garbage_collection = EventNames.GarbageCollection;
  57     public static final String event_young_garbage_collection = EventNames.YoungGarbageCollection;


 154         // Add all events except those with gcId = min/max gcId
 155         List<RecordedEvent> filteredEvents = new ArrayList<>();
 156         for (RecordedEvent event : events) {
 157             if (Events.hasField(event, "gcId")) {
 158                 int gcId = Events.assertField(event, "gcId").getValue();
 159                 if (gcId != minGcId && gcId != maxGcId) {
 160                     filteredEvents.add(event);
 161                 }
 162             }
 163         }
 164         return filteredEvents;
 165     }
 166 
 167     public static Map<String, Boolean> beanCollectorTypes = new HashMap<>();
 168     public static Set<String> collectorOverrides = new HashSet<>();
 169     public static Map<String, String[]> requiredEvents = new HashMap<>();
 170 
 171     static {
 172         // young GarbageCollectionMXBeans.
 173         beanCollectorTypes.put("G1 Young Generation", true);

 174         beanCollectorTypes.put("Copy", true);
 175         beanCollectorTypes.put("PS Scavenge", true);
 176         beanCollectorTypes.put("ParNew", true);
 177 
 178         // old GarbageCollectionMXBeans.
 179         beanCollectorTypes.put("G1 Old Generation", false);



 180         beanCollectorTypes.put("ConcurrentMarkSweep", false);
 181         beanCollectorTypes.put("PS MarkSweep", false);
 182         beanCollectorTypes.put("MarkSweepCompact", false);
 183 
 184         // List of expected collector overrides. "A.B" means that collector A may use collector B.
 185         collectorOverrides.add("G1Old.G1Full");
 186         collectorOverrides.add("ConcurrentMarkSweep.SerialOld");
 187         collectorOverrides.add("SerialOld.PSMarkSweep");
 188 
 189         requiredEvents.put(gcG1New, new String[] {event_heap_summary, event_young_garbage_collection});
 190         requiredEvents.put(gcParNew, new String[] {event_heap_summary, event_heap_metaspace_summary, event_phases_pause, event_phases_level_1, event_young_garbage_collection});
 191         requiredEvents.put(gcDefNew, new String[] {event_heap_summary, event_heap_metaspace_summary, event_phases_pause, event_phases_level_1, event_young_garbage_collection});
 192         requiredEvents.put(gcParallelScavenge, new String[] {event_heap_summary, event_heap_ps_summary, event_heap_metaspace_summary, event_reference_statistics, event_phases_pause, event_phases_level_1, event_young_garbage_collection});
 193         requiredEvents.put(gcG1Old, new String[] {event_heap_summary, event_old_garbage_collection});
 194         requiredEvents.put(gcG1Full, new String[] {event_heap_summary, event_heap_metaspace_summary, event_phases_pause, event_phases_level_1, event_old_garbage_collection});
 195         requiredEvents.put(gcConcurrentMarkSweep, new String[] {event_phases_pause, event_phases_level_1, event_old_garbage_collection});
 196         requiredEvents.put(gcSerialOld, new String[] {event_heap_summary, event_heap_metaspace_summary, event_phases_pause, event_phases_level_1, event_old_garbage_collection});
 197         requiredEvents.put(gcParallelOld, new String[] {event_heap_summary, event_heap_ps_summary, event_heap_metaspace_summary, event_reference_statistics, event_phases_pause, event_phases_level_1, event_old_garbage_collection, event_parold_garbage_collection});
 198 
 199         String[] g1HeapRegionTypeLiterals = new String[] {




  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 package jdk.test.lib.jfr;
  26 
  27 import static jdk.test.lib.Asserts.assertEquals;
  28 import static jdk.test.lib.Asserts.assertNotEquals;
  29 import static jdk.test.lib.Asserts.assertNotNull;
  30 import static jdk.test.lib.Asserts.assertNull;
  31 import static jdk.test.lib.Asserts.fail;
  32 
  33 import java.io.FileOutputStream;
  34 import java.io.IOException;
  35 import java.io.PrintStream;
  36 import java.lang.management.GarbageCollectorMXBean;
  37 import java.lang.management.ManagementFactory;
  38 import com.sun.management.HotSpotDiagnosticMXBean;
  39 import com.sun.management.VMOption;
  40 import java.time.Instant;
  41 import java.util.ArrayList;
  42 import java.util.Arrays;
  43 import java.util.Collections;
  44 import java.util.HashMap;
  45 import java.util.HashSet;
  46 import java.util.List;
  47 import java.util.Map;
  48 import java.util.Set;
  49 import java.util.Stack;
  50 
  51 import jdk.jfr.ValueDescriptor;
  52 import jdk.jfr.consumer.RecordedEvent;
  53 
  54 /**
  55  * Mixed helper classes to test GC events.
  56  */
  57 public class GCHelper {
  58     public static final String event_garbage_collection = EventNames.GarbageCollection;
  59     public static final String event_young_garbage_collection = EventNames.YoungGarbageCollection;


 156         // Add all events except those with gcId = min/max gcId
 157         List<RecordedEvent> filteredEvents = new ArrayList<>();
 158         for (RecordedEvent event : events) {
 159             if (Events.hasField(event, "gcId")) {
 160                 int gcId = Events.assertField(event, "gcId").getValue();
 161                 if (gcId != minGcId && gcId != maxGcId) {
 162                     filteredEvents.add(event);
 163                 }
 164             }
 165         }
 166         return filteredEvents;
 167     }
 168 
 169     public static Map<String, Boolean> beanCollectorTypes = new HashMap<>();
 170     public static Set<String> collectorOverrides = new HashSet<>();
 171     public static Map<String, String[]> requiredEvents = new HashMap<>();
 172 
 173     static {
 174         // young GarbageCollectionMXBeans.
 175         beanCollectorTypes.put("G1 Young Generation", true);
 176         beanCollectorTypes.put("G1 Young", true);
 177         beanCollectorTypes.put("Copy", true);
 178         beanCollectorTypes.put("PS Scavenge", true);
 179         beanCollectorTypes.put("ParNew", true);
 180 
 181         // old GarbageCollectionMXBeans.
 182         beanCollectorTypes.put("G1 Old Generation", false);
 183         beanCollectorTypes.put("G1 Mixed", false);
 184         beanCollectorTypes.put("G1 Concurrent Cycle", false);
 185         beanCollectorTypes.put("G1 Full", false);
 186         beanCollectorTypes.put("ConcurrentMarkSweep", false);
 187         beanCollectorTypes.put("PS MarkSweep", false);
 188         beanCollectorTypes.put("MarkSweepCompact", false);
 189 
 190         // List of expected collector overrides. "A.B" means that collector A may use collector B.
 191         collectorOverrides.add("G1Old.G1Full");
 192         collectorOverrides.add("ConcurrentMarkSweep.SerialOld");
 193         collectorOverrides.add("SerialOld.PSMarkSweep");
 194 
 195         requiredEvents.put(gcG1New, new String[] {event_heap_summary, event_young_garbage_collection});
 196         requiredEvents.put(gcParNew, new String[] {event_heap_summary, event_heap_metaspace_summary, event_phases_pause, event_phases_level_1, event_young_garbage_collection});
 197         requiredEvents.put(gcDefNew, new String[] {event_heap_summary, event_heap_metaspace_summary, event_phases_pause, event_phases_level_1, event_young_garbage_collection});
 198         requiredEvents.put(gcParallelScavenge, new String[] {event_heap_summary, event_heap_ps_summary, event_heap_metaspace_summary, event_reference_statistics, event_phases_pause, event_phases_level_1, event_young_garbage_collection});
 199         requiredEvents.put(gcG1Old, new String[] {event_heap_summary, event_old_garbage_collection});
 200         requiredEvents.put(gcG1Full, new String[] {event_heap_summary, event_heap_metaspace_summary, event_phases_pause, event_phases_level_1, event_old_garbage_collection});
 201         requiredEvents.put(gcConcurrentMarkSweep, new String[] {event_phases_pause, event_phases_level_1, event_old_garbage_collection});
 202         requiredEvents.put(gcSerialOld, new String[] {event_heap_summary, event_heap_metaspace_summary, event_phases_pause, event_phases_level_1, event_old_garbage_collection});
 203         requiredEvents.put(gcParallelOld, new String[] {event_heap_summary, event_heap_ps_summary, event_heap_metaspace_summary, event_reference_statistics, event_phases_pause, event_phases_level_1, event_old_garbage_collection, event_parold_garbage_collection});
 204 
 205         String[] g1HeapRegionTypeLiterals = new String[] {


< prev index next >