asmuts 02/05/09 14:47:11
Modified: src/java/org/apache/jcs/engine/memory/shrinking
ShrinkerThread.java
Log:
There is a small memory leak. Fixed a bug and added more logging.
Will look into the leak tomorrow.
Revision Changes Path
1.4 +40 -23
jakarta-turbine-jcs/src/java/org/apache/jcs/engine/memory/shrinking/ShrinkerThread.java
Index: ShrinkerThread.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-jcs/src/java/org/apache/jcs/engine/memory/shrinking/ShrinkerThread.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ShrinkerThread.java 9 May 2002 19:11:51 -0000 1.3
+++ ShrinkerThread.java 9 May 2002 21:47:11 -0000 1.4
@@ -67,7 +67,6 @@
import org.apache.jcs.engine.control.event.behavior.IElementEvent;
import org.apache.jcs.engine.control.event.behavior.IElementEventConstants;
-
/**
* A background memory shrinker. Just started. <u>DON'T USE</u>
*
@@ -138,7 +137,7 @@
log.debug( "Shrinking" );
}
- // not thread safe. Copuld cause problems. Only call remove directly
+ // not thread safe. Could cause problems. Only call remove directly
// to the map.
try
{
@@ -152,6 +151,15 @@
long now = System.currentTimeMillis();
+ if ( log.isDebugEnabled() )
+ {
+ log.debug( "now = " + now );
+ log.debug( "!me.ce.getElementAttributes().getIsEternal() = " +
!me.ce.getElementAttributes().getIsEternal() );
+ log.debug( "me.ce.getElementAttributes().getMaxLifeSeconds() =
" + me.ce.getElementAttributes().getMaxLifeSeconds() );
+ log.debug( "now - me.ce.getElementAttributes().getCreateTime()
= " + String.valueOf( now - me.ce.getElementAttributes().getCreateTime() ) );
+ log.debug( "me.ce.getElementAttributes().getMaxLifeSeconds() *
1000 = " + me.ce.getElementAttributes().getMaxLifeSeconds() * 1000 );
+ }
+
// Memory idle, to disk shrinkage
if ( cache.getCacheAttributes().getMaxMemoryIdleTimeSeconds() != -1
)
{
@@ -166,7 +174,8 @@
cache.waterfal( me );
}
}
- else if ( !me.ce.getElementAttributes().getIsEternal() )
+
+ if ( !me.ce.getElementAttributes().getIsEternal() )
{
// Exceeded maxLifeSeconds
if ( ( me.ce.getElementAttributes().getMaxLifeSeconds() != -1 )
&& ( now - me.ce.getElementAttributes().getCreateTime() ) > (
me.ce.getElementAttributes().getMaxLifeSeconds() * 1000 ) )
@@ -178,17 +187,19 @@
// handle event, might move to a new method
ArrayList eventHandlers =
me.ce.getElementAttributes().getElementEventHandlers();
- if ( log.isDebugEnabled() )
+ if ( eventHandlers != null )
{
- log.debug( "Handlers are registered. Event --
ELEMENT_EVENT_EXCEEDED_MAXLIFE_BACKGROUND" );
- }
- if ( eventHandlers != null ) {
- IElementEvent event = new ElementEvent(me.ce,
IElementEventConstants.ELEMENT_EVENT_EXCEEDED_MAXLIFE_BACKGROUND);
- Iterator hIt = eventHandlers.iterator();
- while ( hIt.hasNext() ) {
- IElementEventHandler hand =
(IElementEventHandler)hIt.next();
- hand.handleElementEvent(event);
- }
+ if ( log.isDebugEnabled() )
+ {
+ log.debug( "Handlers are registered. Event --
ELEMENT_EVENT_EXCEEDED_MAXLIFE_BACKGROUND" );
+ }
+ IElementEvent event = new ElementEvent( me.ce,
IElementEventConstants.ELEMENT_EVENT_EXCEEDED_MAXLIFE_BACKGROUND );
+ Iterator hIt = eventHandlers.iterator();
+ while ( hIt.hasNext() )
+ {
+ IElementEventHandler hand = ( IElementEventHandler
) hIt.next();
+ hand.handleElementEvent( event );
+ }
}
itr.remove();
@@ -209,25 +220,31 @@
// handle event, might move to a new method
ArrayList eventHandlers =
me.ce.getElementAttributes().getElementEventHandlers();
- if ( log.isDebugEnabled() )
+ if ( eventHandlers != null )
{
- log.debug( "Handlers are registered. Event --
ELEMENT_EVENT_EXCEEDED_IDLETIME_BACKGROUND" );
- }
- if ( eventHandlers != null ) {
- IElementEvent event = new ElementEvent(me.ce,
IElementEventConstants.ELEMENT_EVENT_EXCEEDED_IDLETIME_BACKGROUND);
- Iterator hIt = eventHandlers.iterator();
- while ( hIt.hasNext() ) {
- IElementEventHandler hand =
(IElementEventHandler)hIt.next();
- hand.handleElementEvent(event);
- }
+ if ( log.isDebugEnabled() )
+ {
+ log.debug( "Handlers are registered. Event --
ELEMENT_EVENT_EXCEEDED_IDLETIME_BACKGROUND" );
+ }
+ IElementEvent event = new ElementEvent( me.ce,
IElementEventConstants.ELEMENT_EVENT_EXCEEDED_IDLETIME_BACKGROUND );
+ Iterator hIt = eventHandlers.iterator();
+ while ( hIt.hasNext() )
+ {
+ IElementEventHandler hand = ( IElementEventHandler
) hIt.next();
+ hand.handleElementEvent( event );
+ }
}
itr.remove();
+
//cache.remove( me.ce.getKey() );
}
}
}
+
+ itr = null;
+
}
catch ( Throwable t )
{
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>