Skip to content

Commit

Permalink
Minor tweaks to memory allocation trackers
Browse files Browse the repository at this point in the history
  • Loading branch information
Andrei Koval committed Mar 6, 2018
1 parent c109b71 commit 74cb2da
Show file tree
Hide file tree
Showing 6 changed files with 36 additions and 37 deletions.
Expand Up @@ -27,31 +27,31 @@
* @see org.neo4j.memory.MemoryAllocationTracker
* @see MemoryTracker
*/
public class GlobalMemoryTracker implements MemoryTracker, MemoryAllocationTracker
public class GlobalMemoryTracker implements MemoryAllocationTracker
{
private LongAdder longAdder = new LongAdder();

public static final GlobalMemoryTracker INSTANCE = new GlobalMemoryTracker();

private final LongAdder allocatedBytes = new LongAdder();

private GlobalMemoryTracker()
{
}

@Override
public long usedDirectMemory()
{
return longAdder.sum();
return allocatedBytes.sum();
}

@Override
public void allocate( long allocatedBytes )
public void allocated( long bytes )
{
longAdder.add( allocatedBytes );
allocatedBytes.add( bytes );
}

@Override
public void deallocate( long deAllocatedBytes )
public void deallocated( long bytes )
{
longAdder.add( -deAllocatedBytes );
allocatedBytes.add( -bytes );
}
}
Expand Up @@ -24,23 +24,22 @@
* tracking of memory that is independent from global.
* All allocations/de-allocation reported to this trackers also will be reported to global tracker transparently.
*/
public class LocalMemoryTracker implements MemoryTracker, MemoryAllocationTracker
public class LocalMemoryTracker implements MemoryAllocationTracker
{
private long allocatedBytes;
private GlobalMemoryTracker globalTracker = GlobalMemoryTracker.INSTANCE;

@Override
public void allocate( long allocatedBytes )
public void allocated( long bytes )
{
globalTracker.allocate( allocatedBytes );
this.allocatedBytes += allocatedBytes;
GlobalMemoryTracker.INSTANCE.allocated( bytes );
this.allocatedBytes += bytes;
}

@Override
public void deallocate( long deallocatedBytes )
public void deallocated( long bytes )
{
globalTracker.deallocate( deallocatedBytes );
this.allocatedBytes -= deallocatedBytes;
GlobalMemoryTracker.INSTANCE.deallocated( bytes );
this.allocatedBytes -= bytes;
}

/**
Expand Down
Expand Up @@ -22,17 +22,17 @@
/**
* Memory allocation tracker that tracks bytes allocation and de-allocation
*/
public interface MemoryAllocationTracker
public interface MemoryAllocationTracker extends MemoryTracker
{
/**
* Record allocation of bytes
* @param allocatedBytes number of allocated bytes
* @param bytes number of allocated bytes
*/
void allocate( long allocatedBytes );
void allocated( long bytes );

/**
* Record de-allocation of bytes
* @param deAllocatedBytes number of de0allocated bytes
* @param bytes number of de0allocated bytes
*/
void deallocate( long deAllocatedBytes );
void deallocated( long bytes );
}
Expand Up @@ -30,23 +30,23 @@ public class GlobalMemoryTrackerTest
public void trackMemoryAllocations()
{
long initialUsedMemory = GlobalMemoryTracker.INSTANCE.usedDirectMemory();
GlobalMemoryTracker.INSTANCE.allocate( 10 );
GlobalMemoryTracker.INSTANCE.allocate( 20 );
GlobalMemoryTracker.INSTANCE.allocate( 40 );
GlobalMemoryTracker.INSTANCE.allocated( 10 );
GlobalMemoryTracker.INSTANCE.allocated( 20 );
GlobalMemoryTracker.INSTANCE.allocated( 40 );
assertEquals( 70, GlobalMemoryTracker.INSTANCE.usedDirectMemory() - initialUsedMemory );
}

@Test
public void trackMemoryDeallocations()
{
long initialUsedMemory = GlobalMemoryTracker.INSTANCE.usedDirectMemory();
GlobalMemoryTracker.INSTANCE.allocate( 100 );
GlobalMemoryTracker.INSTANCE.allocated( 100 );
assertEquals( 100, GlobalMemoryTracker.INSTANCE.usedDirectMemory() - initialUsedMemory );

GlobalMemoryTracker.INSTANCE.deallocate( 20 );
GlobalMemoryTracker.INSTANCE.deallocated( 20 );
assertEquals( 80, GlobalMemoryTracker.INSTANCE.usedDirectMemory() - initialUsedMemory );

GlobalMemoryTracker.INSTANCE.deallocate( 40 );
GlobalMemoryTracker.INSTANCE.deallocated( 40 );
assertEquals( 40, GlobalMemoryTracker.INSTANCE.usedDirectMemory() - initialUsedMemory );
}
}
Expand Up @@ -29,23 +29,23 @@ public class LocalMemoryTrackerTest
public void trackMemoryAllocations()
{
LocalMemoryTracker memoryTracker = new LocalMemoryTracker();
memoryTracker.allocate( 10 );
memoryTracker.allocate( 20 );
memoryTracker.allocate( 40 );
memoryTracker.allocated( 10 );
memoryTracker.allocated( 20 );
memoryTracker.allocated( 40 );
assertEquals( 70, memoryTracker.usedDirectMemory());
}

@Test
public void trackMemoryDeallocations()
{
LocalMemoryTracker memoryTracker = new LocalMemoryTracker();
memoryTracker.allocate( 100 );
memoryTracker.allocated( 100 );
assertEquals( 100, memoryTracker.usedDirectMemory() );

memoryTracker.deallocate( 20 );
memoryTracker.deallocated( 20 );
assertEquals( 80, memoryTracker.usedDirectMemory() );

memoryTracker.deallocate( 40 );
memoryTracker.deallocated( 40 );
assertEquals( 40, memoryTracker.usedDirectMemory() );
}

Expand All @@ -56,11 +56,11 @@ public void localMemoryTrackerPropagatesAllocationsToGlobalTracker()
long initialGlobalUsage = globalMemoryTracker.usedDirectMemory();
LocalMemoryTracker memoryTracker = new LocalMemoryTracker();

memoryTracker.allocate( 100 );
memoryTracker.allocated( 100 );
assertEquals( 100, memoryTracker.usedDirectMemory() );
assertEquals( 100, globalMemoryTracker.usedDirectMemory() - initialGlobalUsage );

memoryTracker.deallocate( 50 );
memoryTracker.deallocated( 50 );
assertEquals( 50, memoryTracker.usedDirectMemory() );
assertEquals( 50, globalMemoryTracker.usedDirectMemory() - initialGlobalUsage );
}
Expand Down
Expand Up @@ -393,7 +393,7 @@ public static long allocateMemory( long sizeInBytes, MemoryAllocationTracker all
setMemory( pointer, sizeInBytes, (byte) 0xA5 );
}
addAllocatedPointer( pointer, sizeInBytes );
allocationTracker.allocate( sizeInBytes );
allocationTracker.allocated( sizeInBytes );
return pointer;
}

Expand Down Expand Up @@ -431,7 +431,7 @@ public static void free( long pointer, long bytes, MemoryAllocationTracker alloc
{
checkFree( pointer );
unsafe.freeMemory( pointer );
allocationTracker.deallocate( bytes );
allocationTracker.deallocated( bytes );
}

private static final class FreeTrace extends Throwable implements Comparable<FreeTrace>
Expand Down

0 comments on commit 74cb2da

Please sign in to comment.