ehcache

net.sf.ehcache.management
Class CacheStatistics

java.lang.Object
  extended by net.sf.ehcache.management.CacheStatistics
All Implemented Interfaces:
CacheStatisticsMBean

public class CacheStatistics
extends java.lang.Object
implements CacheStatisticsMBean

A JMX CacheStatistics decorator for an ehcache Statistics class.

An immutable Cache statistics implementation}

This is like a value object, with the added ability to clear cache statistics on the cache. That ability does not survive any Serialization of this class. On deserialization the cache can be considered disconnected.

The accuracy of these statistics are determined by the value of {#getStatisticsAccuracy()} at the time the statistic was computed. This can be changed by setting Cache.setStatisticsAccuracy(int).

Because this class maintains a reference to an Ehcache, any references held to this class will precent the Ehcache from getting garbage collected.

Since:
1.3
Version:
$Id: CacheStatistics.java 560 2007-11-13 10:54:59Z gregluck $
Author:
Greg Luck

Constructor Summary
CacheStatistics(Ehcache ehcache)
          Constructs an object from an ehcache statistics object
 
Method Summary
 void clearStatistics()
          Clears the statistic counters to 0 for the associated Cache.
(package private) static javax.management.ObjectName createObjectName(java.lang.String cacheManagerName, java.lang.String cacheName)
          Creates an object name using the scheme "net.sf.ehcache:type=CacheStatistics,CacheManager=,name="
 java.lang.String getAssociatedCacheName()
           
 long getCacheHits()
          The number of times a requested item was found in the cache.
 long getCacheMisses()
          Warning.
 long getInMemoryHits()
          Number of times a requested item was found in the Memory Store.
 long getObjectCount()
          Gets the number of elements stored in the cache.
(package private)  javax.management.ObjectName getObjectName()
           
 long getOnDiskHits()
          Number of times a requested item was found in the Disk Store.
 int getStatisticsAccuracy()
          Accurately measuring statistics can be expensive.
 java.lang.String getStatisticsAccuracyDescription()
          Accurately measuring statistics can be expensive.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CacheStatistics

public CacheStatistics(Ehcache ehcache)
Constructs an object from an ehcache statistics object

Parameters:
ehcache - the backing ehcache
Method Detail

createObjectName

static javax.management.ObjectName createObjectName(java.lang.String cacheManagerName,
                                                    java.lang.String cacheName)
Creates an object name using the scheme "net.sf.ehcache:type=CacheStatistics,CacheManager=,name="


getStatisticsAccuracy

public int getStatisticsAccuracy()
Accurately measuring statistics can be expensive. Returns the current accuracy setting used in the creation of these statistics.

Specified by:
getStatisticsAccuracy in interface CacheStatisticsMBean
Returns:
one of Statistics.STATISTICS_ACCURACY_BEST_EFFORT, Statistics.STATISTICS_ACCURACY_GUARANTEED, Statistics.STATISTICS_ACCURACY_NONE

getStatisticsAccuracyDescription

public java.lang.String getStatisticsAccuracyDescription()
Accurately measuring statistics can be expensive. Returns the current accuracy setting.

Specified by:
getStatisticsAccuracyDescription in interface CacheStatisticsMBean
Returns:
a human readable description of the accuracy setting. One of "None", "Best Effort" or "Guaranteed".

getAssociatedCacheName

public java.lang.String getAssociatedCacheName()
Specified by:
getAssociatedCacheName in interface CacheStatisticsMBean
Returns:
the name of the Ehcache, or null is there no associated cache

clearStatistics

public void clearStatistics()
Clears the statistic counters to 0 for the associated Cache.

Specified by:
clearStatistics in interface CacheStatisticsMBean

getCacheHits

public long getCacheHits()
The number of times a requested item was found in the cache.

Warning. This statistic is recorded as a long. If the statistic is large than Integer#MAX_VALUE precision will be lost.

Specified by:
getCacheHits in interface CacheStatisticsMBean
Returns:
the number of times a requested item was found in the cache

getInMemoryHits

public long getInMemoryHits()
Number of times a requested item was found in the Memory Store.

Specified by:
getInMemoryHits in interface CacheStatisticsMBean
Returns:
the number of times a requested item was found in memory

getOnDiskHits

public long getOnDiskHits()
Number of times a requested item was found in the Disk Store.

Specified by:
getOnDiskHits in interface CacheStatisticsMBean
Returns:
the number of times a requested item was found on Disk, or 0 if there is no disk storage configured.

getCacheMisses

public long getCacheMisses()
Warning. This statistic is recorded as a long. If the statistic is large than Integer#MAX_VALUE precision will be lost.

Specified by:
getCacheMisses in interface CacheStatisticsMBean
Returns:
the number of times a requested element was not found in the cache

getObjectCount

public long getObjectCount()
Gets the number of elements stored in the cache. Caclulating this can be expensive. Accordingly, this method will return three different values, depending on the statistics accuracy setting.

Best Effort Size

This result is returned when the statistics accuracy setting is Statistics.STATISTICS_ACCURACY_BEST_EFFORT.

The size is the number of Elements in the MemoryStore plus the number of Elements in the DiskStore.

This number is the actual number of elements, including expired elements that have not been removed. Any duplicates between stores are accounted for.

Expired elements are removed from the the memory store when getting an expired element, or when attempting to spool an expired element to disk.

Expired elements are removed from the disk store when getting an expired element, or when the expiry thread runs, which is once every five minutes.

Guaranteed Accuracy Size

This result is returned when the statistics accuracy setting is Statistics.STATISTICS_ACCURACY_GUARANTEED.

This method accounts for elements which might be expired or duplicated between stores. It take approximately 200ms per 1000 elements to execute.

Fast but non-accurate Size

This result is returned when the statistics accuracy setting is Statistics.STATISTICS_ACCURACY_NONE.

The number given may contain expired elements. In addition if the DiskStore is used it may contain some double counting of elements. It takes 6ms for 1000 elements to execute. Time to execute is O(log n). 50,000 elements take 36ms.

Specified by:
getObjectCount in interface CacheStatisticsMBean
Returns:
the number of elements in the ehcache, with a varying degree of accuracy, depending on accuracy setting.

getObjectName

javax.management.ObjectName getObjectName()
Returns:
the object name for this MBean

ehcache