in core/org.openjdk.jmc.flightrecorder.rules.jdk/src/main/java/org/openjdk/jmc/flightrecorder/rules/jdk/general/DiscouragedGcOptionsRule.java [66:101]
private Result getResult(IItemCollection items, IPreferenceValueProvider valueProvider) {
EventAvailability eventAvailability = RulesToolkit.getEventAvailability(items, JdkTypeIDs.CPU_INFORMATION);
if (eventAvailability == EventAvailability.UNKNOWN || eventAvailability == EventAvailability.DISABLED) {
return RulesToolkit.getEventAvailabilityResult(this, items, eventAvailability, JdkTypeIDs.CPU_INFORMATION);
}
IQuantity parallelGCThreads = items.getAggregate(JdkAggregators.PARALLEL_GC_THREAD_COUNT_MAX);
IQuantity minHwThreads = items.getAggregate(JdkAggregators.MIN_HW_THREADS);
CollectorType oc = CollectorType.getOldCollectorType(items);
if (parallelGCThreads != null && minHwThreads != null && oc != null) {
if (oc == CollectorType.SERIAL_OLD) {
IQuantity maxHeapSize = items.getAggregate(JdkAggregators.HEAP_CONF_MAX_SIZE);
if (minHwThreads.compareTo(HW_THREADS_FOR_MULTI_CPU) >= 0 && maxHeapSize != null
&& maxHeapSize.compareTo(LARGE_HEAP) > 0) {
return new Result(this, 50, Messages.getString(Messages.SerialGcOnMultiCpuRuleFactory_TEXT_INFO),
Messages.getString(Messages.SerialGcOnMultiCpuRuleFactory_TEXT_INFO_LONG));
}
} else if (minHwThreads.compareTo(ONE) == 0 && oc == CollectorType.PARALLEL_OLD) {
return new Result(this, 50, Messages.getString(Messages.ParallelOnSingleCpuRuleFactory_TEXT_INFO),
Messages.getString(Messages.ParallelOnSingleCpuRuleFactory_TEXT_INFO_LONG));
} else if (parallelGCThreads.compareTo(minHwThreads) > 0) {
String message = MessageFormat.format(
Messages.getString(Messages.NumberOfGcThreadsRuleFactory_TEXT_INFO), parallelGCThreads,
minHwThreads.displayUsing(IDisplayable.AUTO));
String longMessage = message + " " //$NON-NLS-1$
+ Messages.getString(Messages.NumberOfGcThreadsRuleFactory_TEXT_INFO_LONG);
return new Result(this, 50, message, longMessage);
} else if (parallelGCThreads.compareTo(ONE) == 0
&& (oc == CollectorType.PARALLEL_OLD || oc == CollectorType.G1_OLD)) {
return new Result(this, 50, Messages.getString(Messages.ParGcFewThreadsRuleFactory_TEXT_INFO),
Messages.getString(Messages.ParGcFewThreadsRuleFactory_TEXT_INFO_LONG));
}
return new Result(this, 0, Messages.getString(Messages.DiscouragedGcOptionsRule_TEXT_OK));
}
return RulesToolkit.getTooFewEventsResult(this);
}