code: package org.gridkit.jvmtool.gcflow;
  
  import java.util.Collection;
  
  public interface GarbageCollectionSampler {
  
      public void report(String algoName, int eventsMissed, GcReport info);
  
      interface GcReport {
  
          public long getId();
  
          public boolean isYoungGC();
  
          public boolean isConcurrentGC();
  
          public long getCollectedSize();
  
          public long getPromotedSize();
  
          public long getTotalSizeBefore();
  
          public long getTotalSizeAfter();
  
          public Collection<String> getColletedPools();
  
          public Collection<String> getAllCollectedPools();
  
          public Collection<String> getAllMemoryPools();
  
          public long getSizeBefore(String pool);
  
          public long getSizeAfter(String pool);
  
          public long getSizeBefore(Collection<String> pools);
  
          public long getSizeAfter(Collection<String> pools);
  
          public long getTimeSincePreviousGC();
  
          public long getDuration();
  
          public long getJvmClockEndTime();
  
          public long getJvmClockStartTime();
  
          public long getWallClockEndTime();
  
          public long getWallClockStartTime();
  
          public Collection<String> getEdenPools();
  
          public Collection<String> getSurvivourPools();
  
          public Collection<String> getOldSpacePools();
  
          public Collection<String> getPermSpacePools();
  
      }
  }
  