コード例 #1
0
  public static long getCacheSizeInBytes() {
    long totalSize = 0;
    Map<String, PictureTilingCacheInfo> cache = PictureTilingComponent.getCache();

    for (String key : cache.keySet()) {
      PictureTilingCacheInfo cacheEntry = cache.get(key);
      totalSize += cacheEntry.getDiskSpaceUsageInBytes();
    }

    return totalSize;
  }
コード例 #2
0
  public static void doGC(long deltaInKB) {
    gcRuns += 1;
    Map<String, PictureTilingCacheInfo> cache = PictureTilingComponent.getCache();

    Map<Date, String> sortingMap = new HashMap<Date, String>();

    for (String key : cache.keySet()) {
      PictureTilingCacheInfo cacheEntry = cache.get(key);
      sortingMap.put(cacheEntry.getLastAccessedTime(), key);
    }

    List<Date> accesTimeList = new ArrayList<Date>();

    accesTimeList.addAll(sortingMap.keySet());

    Collections.sort(accesTimeList);

    long deletedVolume = 0;
    for (Date accessDate : accesTimeList) {
      PictureTilingCacheInfo cacheEntry = cache.get(sortingMap.get(accessDate));

      long deletePotential = cacheEntry.getDiskSpaceUsageInBytes() / (1024);

      if (deletePotential > deltaInKB - deletedVolume) {
        cacheEntry.partialCleanUp(deltaInKB - deletedVolume + 1);
        return;
      } else {
        deletedVolume += deletePotential;
        cacheEntry.cleanUp();
        cache.remove(accessDate);
      }
      if (deletedVolume > deltaInKB) break;
    }
  }