private void updateTable()

in application/org.openjdk.jmc.flightrecorder.ui/src/main/java/org/openjdk/jmc/flightrecorder/ui/pages/GarbageCollectionsPage.java [582:675]


		private void updateTable(IItemCollection gcs) {
			Map<Object, GC> gcMap = new HashMap<>();
			gcs.forEach(is -> {
				IMemberAccessor<IQuantity, IItem> gcIdAccessor = JdkAttributes.GC_ID.getAccessor(is.getType());
				IMemberAccessor<IQuantity, IItem> durationAccessor = JfrAttributes.DURATION.getAccessor(is.getType());
				IMemberAccessor<String, IItem> causeAccessor = JdkAttributes.GC_CAUSE.getAccessor(is.getType());
				IMemberAccessor<String, IItem> nameAccessor = JdkAttributes.GC_NAME.getAccessor(is.getType());
				IMemberAccessor<IQuantity, IItem> longestPauseAccessor = JdkAttributes.GC_LONGEST_PAUSE
						.getAccessor(is.getType());
				IMemberAccessor<IQuantity, IItem> sumPauseAccessor = JdkAttributes.GC_SUM_OF_PAUSES
						.getAccessor(is.getType());
				IMemberAccessor<IQuantity, IItem> startTimeAccessor = JfrAttributes.START_TIME
						.getAccessor(is.getType());
				IMemberAccessor<IQuantity, IItem> endTimeAccessor = JfrAttributes.END_TIME.getAccessor(is.getType());

				is.forEach(item -> {
					GC value = new GC(item, is.getType());
					value.gcId = gcIdAccessor.getMember(item);
					value.duration = durationAccessor.getMember(item);
					value.gcCause = causeAccessor.getMember(item);
					value.gcName = nameAccessor.getMember(item);
					value.longestPause = longestPauseAccessor.getMember(item);
					value.sumOfPauses = sumPauseAccessor.getMember(item);
					value.startTime = startTimeAccessor.getMember(item);
					value.endTime = endTimeAccessor.getMember(item);
					logDuplicateGcId(gcMap.put(gcIdAccessor.getMember(item), value));
				});
			});
			IItemCollection refItems = getDataSource().getItems().apply(JdkFilters.REFERENCE_STATISTICS);
			refItems.forEach(is -> {
				IMemberAccessor<IQuantity, IItem> gdIdAccessor = JdkAttributes.GC_ID.getAccessor(is.getType());
				IMemberAccessor<String, IItem> typeAccessor = JdkAttributes.REFERENCE_STATISTICS_TYPE
						.getAccessor(is.getType());
				IMemberAccessor<IQuantity, IItem> countAccessor = JdkAttributes.REFERENCE_STATISTICS_COUNT
						.getAccessor(is.getType());
				is.forEach(item -> {
					GC gc = gcMap.get(gdIdAccessor.getMember(item));
					if (gc != null) {
						gc.setRefCount(typeAccessor.getMember(item), countAccessor.getMember(item));
					}
				});
			});
			IItemCollection heapItems = getDataSource().getItems().apply(JdkFilters.HEAP_SUMMARY);
			heapItems.forEach(is -> {
				IMemberAccessor<IQuantity, IItem> gcIdAccessor = JdkAttributes.GC_ID.getAccessor(is.getType());
				IMemberAccessor<String, IItem> gcWhenAccessor = JdkAttributes.GC_WHEN.getAccessor(is.getType());
				IMemberAccessor<IQuantity, IItem> usedHeapAccessor = JdkAttributes.HEAP_USED.getAccessor(is.getType());
				IMemberAccessor<IQuantity, IItem> committedHeapAccessor = JdkAttributes.GC_HEAPSPACE_COMMITTED
						.getAccessor(is.getType());

				is.forEach(item -> {
					GC gc = gcMap.get(gcIdAccessor.getMember(item));
					if (gc != null) {
						String when = gcWhenAccessor.getMember(item);
						if ("Before GC".equals(when)) { //$NON-NLS-1$
							gc.usedDelta = gc.usedDelta.subtract(usedHeapAccessor.getMember(item));
							gc.committedDelta = gc.committedDelta.subtract(committedHeapAccessor.getMember(item));
						} else {
							gc.usedDelta = gc.usedDelta.add(usedHeapAccessor.getMember(item));
							gc.committedDelta = gc.committedDelta.add(committedHeapAccessor.getMember(item));
						}
					}
				});
			});

			IItemCollection metaspaceItems = getDataSource().getItems().apply(JdkFilters.METASPACE_SUMMARY);
			metaspaceItems.forEach(is -> {
				IMemberAccessor<IQuantity, IItem> gcIdAccessor = JdkAttributes.GC_ID.getAccessor(is.getType());
				IMemberAccessor<String, IItem> gcWhenAccessor = JdkAttributes.GC_WHEN.getAccessor(is.getType());
				IMemberAccessor<IQuantity, IItem> usedMetaspaceAccessor = JdkAttributes.GC_METASPACE_USED
						.getAccessor(is.getType());
				IMemberAccessor<IQuantity, IItem> committedMetaspaceAccessor = JdkAttributes.GC_METASPACE_COMMITTED
						.getAccessor(is.getType());

				is.forEach(item -> {
					GC gc = gcMap.get(gcIdAccessor.getMember(item));
					if (gc != null && usedMetaspaceAccessor != null && committedMetaspaceAccessor != null
							&& gcWhenAccessor != null) {
						String when = gcWhenAccessor.getMember(item);
						if ("Before GC".equals(when)) { //$NON-NLS-1$
							gc.usedMetaspaceDelta = gc.usedMetaspaceDelta
									.subtract(usedMetaspaceAccessor.getMember(item));
							gc.committedMetaspaceDelta = gc.committedMetaspaceDelta
									.subtract(committedMetaspaceAccessor.getMember(item));
						} else {
							gc.usedMetaspaceDelta = gc.usedMetaspaceDelta.add(usedMetaspaceAccessor.getMember(item));
							gc.committedMetaspaceDelta = gc.committedMetaspaceDelta
									.add(committedMetaspaceAccessor.getMember(item));
						}
					}
				});
			});
			gcList.getViewer().setInput(gcMap.values().toArray());
		}