private static void parseYoungFullGC()

in analysis/gc-log/src/main/java/org/eclipse/jifa/gclog/parser/UnifiedG1OrGenerationalGCLogParser.java [124:168]


    private static void parseYoungFullGC(AbstractGCLogParser parser, ParseRuleContext context, String title, String text) {
        GCModel model = parser.getModel();
        String[] parts = GCLogUtil.splitByBracket(text);
        int causeIndex = 0;
        GCEventType eventType = title.endsWith("Young") ? YOUNG_GC : FULL_GC;
        GCEventBooleanType specialSituation = null;
        if (parser.getMetadata().getCollector() == GCCollectorType.G1 && eventType == YOUNG_GC) {
            switch (parts[0]) {
                case "Concurrent Start":
                    specialSituation = GCEventBooleanType.INITIAL_MARK;
                    break;
                case "Prepare Mixed":
                    specialSituation = GCEventBooleanType.PREPARE_MIXED;
                    break;
                case "Mixed":
                    eventType = G1_MIXED_GC;
                    break;
            }
            causeIndex++;
        }
        GCCause cause = GCCause.getCause(parts[causeIndex]);
        boolean end = text.endsWith("ms");
        GCEvent event;
        if (!end || (event = model.getLastEventOfGCID(context.get(GCID))) == null) {
            event = new GCEvent();
            event.setStartTime(context.get(UPTIME));
            event.setEventType(eventType);
            event.setCause(cause);
            if (cause == GCCause.CMS_FINAL_REMARK) {
                event.setTrue(GCEventBooleanType.IGNORE_PAUSE);
            }
            if (specialSituation != null) {
                event.setTrue(specialSituation);
            }
            event.setGcid(context.get(GCID));
            model.putEvent(event);
        }
        if (end) {
            int tailBegin = text.lastIndexOf(' ');
            tailBegin = text.lastIndexOf(' ', tailBegin - 1);
            if (tailBegin > 0) {
                parseCollectionAndDuration(event, context, text.substring(tailBegin + 1));
            }
        }
    }