!7 import javax.management.*; import javax.management.openmbean.CompositeData; import com.sun.management.GcInfo; import com.sun.management.GarbageCollectionNotificationInfo; sclass GCPause { long start, duration; S name, cause, action; toString { ret "GCPause duration=" + duration + " ms, start=" + start + " (VM time). " + renderStructs(+name, +cause, +action); } } static L pauses = synchroList(); p { onGCNotification(voidfunc(GarbageCollectionNotificationInfo info) { GcInfo gcInfo = info.getGcInfo(); GCPause pause = nu(GCPause, start := gcInfo.getStartTime(), duration := gcInfo.getDuration(), name := info.getGcName(), cause := info.getGcCause(), action := info.getGcAction()); pauses.add(pause); print("Have GC pause: " + pause); }); showButtons("Make some garbage", f makeSomeGarbage); }