code: @Override
      public void rollLogs() {
          summaryFile = null;
  
          List<IncidentImpl> incidentCopies;
          synchronized (incidents) {
              incidentCopies = new ArrayList<IncidentImpl>(incidents.values());
          }
  
          int overage = incidentCopies.size() - 500;
          if (overage > 0) {
              // we have more than 500 incidents: we need to remove least-recently-seen
              // incidents until we're back to 500. We do this daily to prevent unchecked growth
              // in the number of incidents we remember
              List<IncidentImpl> lastSeenIncidents = new ArrayList<IncidentImpl>(incidentCopies);
  
              // sort the incidents by when they were last seen, rather than when they were added
              Collections.sort(lastSeenIncidents, new Comparator<IncidentImpl>() {
                  @Override
                  public int compare(IncidentImpl o1, IncidentImpl o2) {
                      // static method on double does the same as Long.compareTo, and we avoid
                      // object allocation or auto-boxing, etc.
                      return Double.compare(o1.getTimeStamp(), o2.getTimeStamp());
                  }
              });
  
              // For each item we're over 500, remove one from the front of the list (least recently seen)
              synchronized (incidents) {
                  for (Iterator<IncidentImpl> i = lastSeenIncidents.iterator(); i.hasNext() && overage > 0; overage--) {
                      IncidentImpl impl = i.next();
                      i.remove();
  
                      if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                          Tr.debug(tc, "FFDC cleanup -- removing " + impl.key);
                      }
                      // remove the incident from the map, and clean it up (remove the associated files)
                      incidents.remove(impl.key);
                      impl.cleanup();
                  }
              }
          }
  
          for (IncidentImpl incident : incidentCopies) {
              incident.roll();
          }
  
          logSummary(incidentCopies);
      }
docs: {@inheritDoc}
  
  This method is called in response to a scheduled trigger.
  A new summary log file will be created for the next summary period.
  
  @see FFDCJanitor