You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by st...@apache.org on 2006/11/13 11:55:13 UTC
svn commit: r474246 - in
/jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/state:
Cache.java CacheManager.java MLRUItemStateCache.java
Author: stefan
Date: Mon Nov 13 02:55:13 2006
New Revision: 474246
URL: http://svn.apache.org/viewvc?view=rev&rev=474246
Log:
reverting changes from r471800 since it caused a considerable performance degradation
Removed:
jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/state/Cache.java
jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/state/CacheManager.java
Modified:
jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/state/MLRUItemStateCache.java
Modified: jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/state/MLRUItemStateCache.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/state/MLRUItemStateCache.java?view=diff&rev=474246&r1=474245&r2=474246
==============================================================================
--- jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/state/MLRUItemStateCache.java (original)
+++ jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/state/MLRUItemStateCache.java Mon Nov 13 02:55:13 2006
@@ -34,7 +34,7 @@
* cache uses a rough estimate of the memory consuption of the cache item
* states for calculating the maximum number of entries.
*/
-public class MLRUItemStateCache implements ItemStateCache, Cache {
+public class MLRUItemStateCache implements ItemStateCache {
/** Logger instance */
private static Logger log = LoggerFactory.getLogger(LRUItemStateCache.class);
@@ -45,14 +45,11 @@
private long totalMem;
/** the maximum of memory the cache may use */
- private long maxMem;
+ private final long maxMem;
/** the number of writes */
private long numWrites = 0;
- /** the access count */
- private long accessCount = 0;
-
/**
* A cache for <code>ItemState</code> instances
*/
@@ -74,7 +71,6 @@
*/
public MLRUItemStateCache(int maxMem) {
this.maxMem = maxMem;
- CacheManager.getInstance().add(this);
}
//-------------------------------------------------------< ItemStateCache >
@@ -92,7 +88,6 @@
*/
public ItemState retrieve(ItemId id) {
synchronized (cache) {
- touch();
Entry entry = (Entry) cache.remove(id);
if (entry != null) {
// 'touch' item, by adding at end of list
@@ -109,7 +104,6 @@
*/
public void update(ItemId id) {
synchronized (cache) {
- touch();
Entry entry = (Entry) cache.get(id);
if (entry != null) {
totalMem -= entry.size;
@@ -124,7 +118,6 @@
*/
public void cache(ItemState state) {
synchronized (cache) {
- touch();
ItemId id = state.getId();
if (cache.containsKey(id)) {
log.warn("overwriting cached entry " + id);
@@ -133,27 +126,22 @@
Entry entry = new Entry(state);
cache.put(id, entry);
totalMem += entry.size;
- shrinkIfRequired();
+ // remove items, if too many
+ while (totalMem > maxMem) {
+ id = (ItemId) cache.firstKey();
+ evict(id);
+ }
if (numWrites++%10000 == 0 && log.isDebugEnabled()) {
log.info(this + " size=" + cache.size() + ", " + totalMem + "/" + maxMem);
}
}
}
- private void shrinkIfRequired() {
- // remove items, if too many
- while (totalMem > maxMem) {
- ItemId id = (ItemId) cache.firstKey();
- evict(id);
- }
- }
-
/**
* {@inheritDoc}
*/
public void evict(ItemId id) {
synchronized (cache) {
- touch();
Entry entry = (Entry) cache.remove(id);
if (entry != null) {
totalMem -= entry.size;
@@ -210,59 +198,6 @@
list.add(entry.state);
}
return list;
- }
- }
-
- private void touch() {
- accessCount++;
- }
-
- /**
- * {@inheritDoc}
- */
- public long getAccessCount() {
- return accessCount;
- }
-
- /**
- * {@inheritDoc}
- */
- public long getMaxMemorySize() {
- return maxMem;
- }
-
- /**
- * {@inheritDoc}
- */
- public long getMemoryUsed() {
- synchronized (cache) {
- totalMem = 0;
- Iterator iter = cache.values().iterator();
- while (iter.hasNext()) {
- Entry entry = (Entry) iter.next();
- entry.recalc();
- totalMem += entry.size;
- }
- }
- return totalMem;
- }
-
- /**
- * {@inheritDoc}
- */
- public void resetAccessCount() {
- synchronized (cache) {
- accessCount = 0;
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public void setMaxMemorySize(long size) {
- synchronized (cache) {
- this.maxMem = size;
- shrinkIfRequired();
}
}