Interface MemoryMonitor
-
- All Known Implementing Classes:
AbstractMemoryMonitor,FauxMemoryMonitor,NotificationMemoryMonitor
public interface MemoryMonitorAPI for Mondrian's memory monitors.For Java4, the available monitors do nothing since there is no reliable way of detecting that memory is running low using such a JVM (you are welcome to try to create one, but I believe you will fail - some such candidates only make it more likely that an OutOfMemory condition will occur).
For Java5 one can optionally enable a monitor which is based upon the Java5 memory classes locate in java.lang.management.
A client must implement the
MemoryMonitor.Listenerinterface and register with theMemoryMonitor.The
MemoryMonitorsupports having multipleListenerclients. The clients can have the same threshold percentage or different values. The threshold percentage value is used by theMemoryMonitorto determine when to notify a client. It is the percentage of the total memory:100 * free-memory / total-memory (0 ≤ free-memory ≤ total-memory).- Since:
- Feb 01 2007
- Author:
- Richard M. Emberson
-
-
Nested Class Summary
Nested Classes Modifier and Type Interface Description static interfaceMemoryMonitor.ListenerAMemoryMonitorclient implements theListenerinterface and registers with theMemoryMonitor.static interfaceMemoryMonitor.TestThis is an interface that aMemoryMonitormay optionally implement.
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description booleanaddListener(MemoryMonitor.Listener listener)Adds aListenerusing the default threshold percentage.booleanaddListener(MemoryMonitor.Listener listener, int thresholdPercentage)Adds aListenerto theMemoryMonitorwith a given threshold percentage.longgetMaxMemory()Returns the maximum memory usage.longgetUsedMemory()Returns the current memory used.voidremoveAllListener()Clear out allListeners and turnoff JVM memory notification.booleanremoveListener(MemoryMonitor.Listener listener)Removes aListenerfrom theMemoryMonitor.voidupdateListenerThreshold(MemoryMonitor.Listener listener, int percentage)Changes the threshold percentage of a givenListener.
-
-
-
Method Detail
-
addListener
boolean addListener(MemoryMonitor.Listener listener, int thresholdPercentage)
Adds aListenerto theMemoryMonitorwith a given threshold percentage.If the threshold is below the Java5 memory managment system's threshold, then the Listener is notified from within this method.
- Parameters:
listener- theListenerto be added.thresholdPercentage- the threshold percentage for thisListener.- Returns:
trueif theListenerwas added andfalseotherwise.
-
addListener
boolean addListener(MemoryMonitor.Listener listener)
Adds aListenerusing the default threshold percentage.If the threshold is below the Java5 memory managment system's threshold, then the Listener is notified from within this method.
- Parameters:
listener- theListenerto be added.- Returns:
trueif theListenerwas added andfalseotherwise.
-
updateListenerThreshold
void updateListenerThreshold(MemoryMonitor.Listener listener, int percentage)
Changes the threshold percentage of a givenListener.If the new value is below the system's current value, then the
Listenerwill have its notification callback called while in this method - so a client should always check if its notification method was called immediately after calling this method.This method can be used if, for example, an algorithm has different approaches that result in different memory usage profiles; one, large memory but fast and a second which is low-memory but slow. The algorithm starts with the large memory approach, receives a low memory notification, switches to the low memory approach and changes when it should be notified for this new approach. The first approach need to be notified at a lower percentage because it uses lots of memory, possibly quickly; while the second approach, possibly a file based algorithm, has smaller memory requirements and uses memory less quickly thus one can live with a higher notification threshold percentage.
- Parameters:
listener- theListenerbeing updated.percentage- new percentage threshold.
-
removeListener
boolean removeListener(MemoryMonitor.Listener listener)
Removes aListenerfrom theMemoryMonitor. Returnstrueif listener was removed andfalseotherwise.- Parameters:
listener- the listener to be removed- Returns:
trueif listener was removed.
-
removeAllListener
void removeAllListener()
Clear out allListeners and turnoff JVM memory notification.
-
getMaxMemory
long getMaxMemory()
Returns the maximum memory usage.- Returns:
- the maximum memory usage.
-
getUsedMemory
long getUsedMemory()
Returns the current memory used.- Returns:
- the current memory used.
-
-