You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directmemory.apache.org by no...@apache.org on 2012/11/01 13:15:07 UTC
svn commit: r1404554 -
/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/AbstractMemoryManager.java
Author: noctarius
Date: Thu Nov 1 12:15:06 2012
New Revision: 1404554
URL: http://svn.apache.org/viewvc?rev=1404554&view=rev
Log:
DIRECTMEMORY-49 MemoryManagerService.update does not reuse the same pointer
Modified:
directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/AbstractMemoryManager.java
Modified: directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/AbstractMemoryManager.java
URL: http://svn.apache.org/viewvc/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/AbstractMemoryManager.java?rev=1404554&r1=1404553&r2=1404554&view=diff
==============================================================================
--- directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/AbstractMemoryManager.java (original)
+++ directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/AbstractMemoryManager.java Thu Nov 1 12:15:06 2012
@@ -39,8 +39,19 @@ public abstract class AbstractMemoryMana
public Pointer<V> update( Pointer<V> pointer, byte[] payload )
{
- free( pointer );
- return store( payload );
+ if ( pointer.getCapacity() >= payload.length )
+ {
+ pointer.reset();
+ pointer.setFree( false );
+ pointer.getMemoryBuffer().writeBytes( payload );
+ pointer.hit();
+ return pointer;
+ }
+ else
+ {
+ free( pointer );
+ return store( payload );
+ }
}
public long used()