You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@excalibur.apache.org by vg...@apache.org on 2005/04/14 19:37:56 UTC
svn commit: r161326 -
excalibur/trunk/components/store/src/java/org/apache/excalibur/store/impl/StoreJanitorImpl.java
Author: vgritsenko
Date: Thu Apr 14 10:37:56 2005
New Revision: 161326
URL: http://svn.apache.org/viewcvs?view=rev&rev=161326
Log:
whitespace
Modified:
excalibur/trunk/components/store/src/java/org/apache/excalibur/store/impl/StoreJanitorImpl.java
Modified: excalibur/trunk/components/store/src/java/org/apache/excalibur/store/impl/StoreJanitorImpl.java
URL: http://svn.apache.org/viewcvs/excalibur/trunk/components/store/src/java/org/apache/excalibur/store/impl/StoreJanitorImpl.java?view=diff&r1=161325&r2=161326
==============================================================================
--- excalibur/trunk/components/store/src/java/org/apache/excalibur/store/impl/StoreJanitorImpl.java (original)
+++ excalibur/trunk/components/store/src/java/org/apache/excalibur/store/impl/StoreJanitorImpl.java Thu Apr 14 10:37:56 2005
@@ -1,16 +1,16 @@
-/*
- * Copyright 2002-2004 The Apache Software Foundation
+/*
+ * Copyright 2002-2005 The Apache Software Foundation
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
+ * You may obtain a copy of the License at
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied.
- *
+ *
* See the License for the specific language governing permissions and
* limitations under the License.
*/
@@ -32,7 +32,7 @@
* This class is a implentation of a StoreJanitor. Store classes
* can register to the StoreJanitor. When memory is too low,
* the StoreJanitor frees the registered caches until memory is normal.
- *
+ *
* @avalon.component
* @avalon.service type=StoreJanitor
* @x-avalon.info name=store-janitor
@@ -66,8 +66,8 @@
private int index = -1;
/** Should the gc be called on low memory? */
protected boolean invokeGC = false;
- /**
- * Amount of memory in use before sleep(). Must be initially set a resonable
+ /**
+ * Amount of memory in use before sleep(). Must be initially set a resonable
* value; ie. <code>memoryInUse()</code>
*/
protected long inUse;
@@ -75,7 +75,7 @@
/** The calculated delay for the next checker run */
protected long interval = Long.MAX_VALUE; // Sleep time in ms
private long maxRateOfChange = 1; // Used memory change rate in bytes per second
-
+
/**
* Initialize the StoreJanitorImpl.
* A few options can be used :
@@ -95,9 +95,9 @@
* @param params the Configuration of the application
* @exception ParameterException
*/
- public void parameterize(Parameters params) throws ParameterException
+ public void parameterize(Parameters params) throws ParameterException
{
- if (getLogger().isDebugEnabled())
+ if (getLogger().isDebugEnabled())
{
getLogger().debug("Configure StoreJanitorImpl");
}
@@ -112,32 +112,32 @@
Thread.currentThread().getPriority()));
int percent = params.getParameterAsInteger("percent_to_free", 10);
this.invokeGC = params.getParameterAsBoolean("invokegc", this.invokeGC);
-
- if (getMinFreeMemory() < 1)
+
+ if (getMinFreeMemory() < 1)
{
throw new ParameterException("StoreJanitorImpl freememory parameter has to be greater then 1");
}
- if (getMaxHeapSize() < 1)
+ if (getMaxHeapSize() < 1)
{
throw new ParameterException("StoreJanitorImpl heapsize parameter has to be greater then 1");
}
- if (getThreadInterval() < 1)
+ if (getThreadInterval() < 1)
{
throw new ParameterException("StoreJanitorImpl cleanupthreadinterval parameter has to be greater then 1");
}
- if (getPriority() < 1 || getPriority() > 10)
+ if (getPriority() < 1 || getPriority() > 10)
{
throw new ParameterException("StoreJanitorImpl threadpriority has to be between 1 and 10");
}
- if (percent > 100 && percent < 1)
+ if (percent > 100 && percent < 1)
{
throw new ParameterException("StoreJanitorImpl percent_to_free, has to be between 1 and 100");
}
this.fraction = percent / 100.0D;
setStoreList(new ArrayList());
-
- if ( getLogger().isDebugEnabled() )
+
+ if ( getLogger().isDebugEnabled() )
{
getLogger().debug("minimum free memory=" + this.getMinFreeMemory());
getLogger().debug("heapsize=" + this.getMaxHeapSize());
@@ -149,11 +149,11 @@
}
}
- public void start()
+ public void start()
{
doRun = true;
Thread checker = new Thread(this);
- if (getLogger().isDebugEnabled())
+ if (getLogger().isDebugEnabled())
{
getLogger().debug("Intializing checker thread");
}
@@ -163,7 +163,7 @@
checker.start();
}
- public void stop()
+ public void stop()
{
doRun = false;
}
@@ -171,25 +171,25 @@
/**
* The "checker" thread loop.
*/
- public void run()
+ public void run()
{
inUse = memoryInUse();
while (doRun) {
checkMemory();
// Sleep
- if (getLogger().isDebugEnabled())
+ if (getLogger().isDebugEnabled())
{
getLogger().debug("Sleeping for " + interval + "ms");
}
- try
+ try
{
Thread.sleep(interval);
- }
+ }
catch (InterruptedException ignore) {}
// Ignore change in memory during the first run (startup)
- if (firstRun)
+ if (firstRun)
{
firstRun = false;
inUse = memoryInUse();
@@ -202,12 +202,12 @@
*/
protected void checkMemory()
{
- if (getAdaptiveThreadInterval())
+ if (getAdaptiveThreadInterval())
{
// Monitor the rate of change of heap in use.
long change = memoryInUse() - inUse;
long rateOfChange = longDiv(change * 1000, interval); // bps.
- if (maxRateOfChange < rateOfChange)
+ if (maxRateOfChange < rateOfChange)
{
maxRateOfChange = (maxRateOfChange + rateOfChange) / 2;
}
@@ -219,40 +219,40 @@
}
// Amount of memory used is greater than heapsize
- if (memoryLow())
+ if (memoryLow())
{
- if ( this.invokeGC )
+ if ( this.invokeGC )
{
this.freePhysicalMemory();
}
- synchronized (this)
+ synchronized (this)
{
if (!this.invokeGC
- || (memoryLow() && getStoreList().size() > 0))
+ || (memoryLow() && getStoreList().size() > 0))
{
-
+
freeMemory();
setIndex(getIndex() + 1);
}
}
}
- if (getAdaptiveThreadInterval())
+ if (getAdaptiveThreadInterval())
{
// Calculate sleep interval based on the change rate and free memory left
interval = minTimeToFill(maxRateOfChange) * 1000 / 2;
- if (interval > this.threadInterval)
+ if (interval > this.threadInterval)
{
interval = this.threadInterval;
- }
- else if (interval < this.minThreadInterval)
+ }
+ else if (interval < this.minThreadInterval)
{
interval = this.minThreadInterval;
}
inUse = memoryInUse();
- }
- else
+ }
+ else
{
interval = this.threadInterval;
}
@@ -262,24 +262,24 @@
*
* @return true if memory is low
*/
- private boolean memoryLow()
+ private boolean memoryLow()
{
- if (getLogger().isDebugEnabled())
+ if (getLogger().isDebugEnabled())
{
getLogger().debug("JVM Memory total: " + getJVM().totalMemory()
+ ", free: " + getJVM().freeMemory());
}
if ((getJVM().totalMemory() >= getMaxHeapSize())
- && (getJVM().freeMemory() < getMinFreeMemory()))
+ && (getJVM().freeMemory() < getMinFreeMemory()))
{
- if (getLogger().isDebugEnabled())
+ if (getLogger().isDebugEnabled())
{
getLogger().debug("Memory is low!");
}
return true;
- }
- else
+ }
+ else
{
return false;
}
@@ -290,7 +290,7 @@
*
* @return memory in use.
*/
- protected long memoryInUse()
+ protected long memoryInUse()
{
return jvm.totalMemory() - jvm.freeMemory();
}
@@ -302,18 +302,18 @@
* @param rate memory fill rate in time per bytes
* @return amount of time to fill all the memory with given fill rate
*/
- private long minTimeToFill(long rate)
+ private long minTimeToFill(long rate)
{
return longDiv(jvm.freeMemory(), rate);
}
- private long longDiv(long top, long bottom)
+ private long longDiv(long top, long bottom)
{
- try
+ try
{
return top / bottom;
- }
- catch (Exception e)
+ }
+ catch (Exception e)
{
return top > 0 ? Long.MAX_VALUE : Long.MIN_VALUE;
}
@@ -324,10 +324,10 @@
*
* @param store the store to be registered
*/
- public synchronized void register(Store store)
+ public synchronized void register(Store store)
{
getStoreList().add(store);
- if (getLogger().isDebugEnabled())
+ if (getLogger().isDebugEnabled())
{
getLogger().debug("Registered store instance " + store + ". Stores now: "
+ getStoreList().size());
@@ -339,10 +339,10 @@
*
* @param store the store to be unregistered
*/
- public synchronized void unregister(Store store)
+ public synchronized void unregister(Store store)
{
getStoreList().remove(store);
- if (getLogger().isDebugEnabled())
+ if (getLogger().isDebugEnabled())
{
getLogger().debug("Unregistered store instance " + store + ". Stores now: "
+ getStoreList().size());
@@ -361,7 +361,7 @@
*
* @return a java.util.Iterator
*/
- public Iterator iterator()
+ public Iterator iterator()
{
return getStoreList().iterator();
}
@@ -369,23 +369,23 @@
/**
* Round Robin alghorithm for freeing the registered caches.
*/
- private void freeMemory()
+ private void freeMemory()
{
// TODO: Alternative to RR might be to free same fraction from every storage.
- try
+ try
{
// Determine the store.
- if (getIndex() < getStoreList().size())
+ if (getIndex() < getStoreList().size())
{
- if (getIndex() == -1)
+ if (getIndex() == -1)
{
setIndex(0);
}
- }
- else
+ }
+ else
{
// Store list changed (one or more store has been removed).
- if (getLogger().isDebugEnabled())
+ if (getLogger().isDebugEnabled())
{
getLogger().debug("Restarting from the beginning");
}
@@ -395,27 +395,27 @@
// Delete proportionate elements out of the store as configured.
Store store = (Store)getStoreList().get(getIndex());
int limit = calcToFree(store);
- if (getLogger().isDebugEnabled())
+ if (getLogger().isDebugEnabled())
{
getLogger().debug("Freeing " + limit + " items from store N " + getIndex());
}
- for (int i=0; i < limit; i++)
+ for (int i=0; i < limit; i++)
{
try
{
store.free();
- }
- catch (OutOfMemoryError e)
+ }
+ catch (OutOfMemoryError e)
{
getLogger().error("OutOfMemoryError in freeMemory()");
}
}
- }
- catch (Exception e)
+ }
+ catch (Exception e)
{
getLogger().error("Error in freeMemory()", e);
- }
- catch (OutOfMemoryError e)
+ }
+ catch (OutOfMemoryError e)
{
getLogger().error("OutOfMemoryError in freeMemory()");
}
@@ -428,10 +428,10 @@
* @param store the Store which was selected as victim
* @return number of elements to be removed!
*/
- private int calcToFree(Store store)
+ private int calcToFree(Store store)
{
int cnt = store.size();
- if (cnt < 0)
+ if (cnt < 0)
{
if ( getLogger().isDebugEnabled() )
{
@@ -440,7 +440,7 @@
return 0;
}
final int res = (int)(cnt * fraction);
- if ( getLogger().isDebugEnabled() )
+ if ( getLogger().isDebugEnabled() )
{
getLogger().debug("Calculating size for store " + store + " with size " + cnt + " : " + res);
}
@@ -450,9 +450,9 @@
/**
* This method forces the garbage collector
*/
- private void freePhysicalMemory()
+ private void freePhysicalMemory()
{
- if (getLogger().isDebugEnabled())
+ if (getLogger().isDebugEnabled())
{
getLogger().debug("Invoking garbage collection. Memory total: "
+ getJVM().totalMemory() + ", free: "
@@ -462,51 +462,51 @@
getJVM().runFinalization();
getJVM().gc();
- if (getLogger().isDebugEnabled())
+ if (getLogger().isDebugEnabled())
{
getLogger().debug("Garbage collection complete. Memory total: "
+ getJVM().totalMemory() + ", free: "
+ getJVM().freeMemory());
}
}
-
- private int getMinFreeMemory()
+
+ private int getMinFreeMemory()
{
return this.minFreeMemory;
}
- private void setMinFreeMemory(int _freememory)
+ private void setMinFreeMemory(int _freememory)
{
this.minFreeMemory = _freememory;
}
- private int getMaxHeapSize()
+ private int getMaxHeapSize()
{
return this.maxHeapSize;
}
- private void setMaxHeapSize(int _heapsize)
+ private void setMaxHeapSize(int _heapsize)
{
this.maxHeapSize = _heapsize;
}
- private int getPriority()
+ private int getPriority()
{
return this.priority;
}
- private void setPriority(int _priority)
+ private void setPriority(int _priority)
{
this.priority = _priority;
}
- private int getThreadInterval()
+ private int getThreadInterval()
{
return this.threadInterval;
}
- private void setThreadInterval(int _threadInterval)
+ private void setThreadInterval(int _threadInterval)
{
this.threadInterval = _threadInterval;
}
@@ -516,41 +516,41 @@
return this.adaptiveThreadInterval;
}
- private void setAdaptiveThreadInterval(boolean _adaptiveThreadInterval)
+ private void setAdaptiveThreadInterval(boolean _adaptiveThreadInterval)
{
this.adaptiveThreadInterval = _adaptiveThreadInterval;
}
- private Runtime getJVM()
+ private Runtime getJVM()
{
return this.jvm;
}
- private void setJVM(Runtime _jvm)
+ private void setJVM(Runtime _jvm)
{
this.jvm = _jvm;
}
- private ArrayList getStoreList()
+ private ArrayList getStoreList()
{
return this.storelist;
}
- private void setStoreList(ArrayList _storelist)
+ private void setStoreList(ArrayList _storelist)
{
this.storelist = _storelist;
}
- private void setIndex(int _index)
+ private void setIndex(int _index)
{
- if (getLogger().isDebugEnabled())
+ if (getLogger().isDebugEnabled())
{
getLogger().debug("Setting index=" + _index);
}
this.index = _index;
}
- private int getIndex()
+ private int getIndex()
{
return this.index;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: scm-unsubscribe@excalibur.apache.org
For additional commands, e-mail: scm-help@excalibur.apache.org