Skip navigation links

Oracle® Coherence Java API Reference
Release 3.7.0.0

E18683-01


com.tangosol.io.nio
Class DirectBufferManager

java.lang.Object
  extended by com.tangosol.util.Base
      extended by com.tangosol.io.nio.AbstractBufferManager
          extended by com.tangosol.io.nio.DirectBufferManager

All Implemented Interfaces:
ByteBufferManager

public class DirectBufferManager
extends AbstractBufferManager

Manages a growable direct ByteBuffer.

Since:
Coherence 2.2
Author:
cp 2002.09.16
See Also:
ByteBuffer

Field Summary
static int CLEANUP_FINALIZERS
          Use Runtime.runFinalization() to trigger finalization (default).
static int CLEANUP_GC
          Use Runtime.gc() to trigger finalization.
static int CLEANUP_NONE
          Do not perform any buffer cleanup.
protected static boolean MODE_DEBUG
          Set to true to use on-heap storage, false to use off-heap.
protected static long s_cbUncollected
          Total amount of memory that have not been collected yet.

 

Constructor Summary
DirectBufferManager(int cbInitial, int cbMaximum)
          Construct a DirectBufferManager that supports a buffer of a certain initial and maximum size.

 

Method Summary
protected  void allocateBuffer()
          Allocate a new buffer, copying old data if there is any.
protected  void cleanupBuffers()
          Determines if and how to induce the JVM to run finalizers.
static int getAllocations()
          Return the total number of buffers allocated by the DirectBufferManager.
static int getCleanupMethod()
          Return the method used for buffers cleanup when the threshold is met.
static float getCleanupThreshold()
          Return the value used to calculate the size threshold for the uncollected buffers that triggers a cleanup operation.
static long getTotalAllocationTime()
          Return the total time spent allocating buffers, copying the previous content and cleaning up uncollected buffers.
protected static void setCleanupMethod(int nCleanupMethod)
          Set the method to be used for buffers cleanup when the threshold is met.
protected static void setCleanupThreshold(float flCleanupThreshold)
          Determines how often, to run the cleanupBuffers() method.

 

Methods inherited from class com.tangosol.io.nio.AbstractBufferManager
calibrate, getBuffer, getCapacity, getGrowthThreshold, getMaxCapacity, getMaxIncrement, getMinCapacity, getShrinkageThreshold, grow, setBuffer, setCapacity, setGrowthThreshold, setMaxCapacity, setMinCapacity, setShrinkageThreshold, shrink

 

Field Detail

CLEANUP_NONE

public static final int CLEANUP_NONE
Do not perform any buffer cleanup.
See Also:
Constant Field Values

CLEANUP_FINALIZERS

public static final int CLEANUP_FINALIZERS
Use Runtime.runFinalization() to trigger finalization (default).
See Also:
Constant Field Values

CLEANUP_GC

public static final int CLEANUP_GC
Use Runtime.gc() to trigger finalization.
See Also:
Constant Field Values

MODE_DEBUG

protected static final boolean MODE_DEBUG
Set to true to use on-heap storage, false to use off-heap.
See Also:
Constant Field Values

s_cbUncollected

protected static volatile long s_cbUncollected
Total amount of memory that have not been collected yet.

Constructor Detail

DirectBufferManager

public DirectBufferManager(int cbInitial,
                           int cbMaximum)
Construct a DirectBufferManager that supports a buffer of a certain initial and maximum size.
Parameters:
cbInitial - the initial size
cbMaximum - the maximum size

Method Detail

allocateBuffer

protected void allocateBuffer()
Allocate a new buffer, copying old data if there is any.
Specified by:
allocateBuffer in class AbstractBufferManager
See Also:
ByteBuffer.allocateDirect()

cleanupBuffers

protected void cleanupBuffers()
Determines if and how to induce the JVM to run finalizers. This allows to somewhat mitigate the cleanup threshold frequency, induce the GC. In a 64-bit VMs this issue is probably reduced to a minimum.

getTotalAllocationTime

public static long getTotalAllocationTime()
Return the total time spent allocating buffers, copying the previous content and cleaning up uncollected buffers.
Returns:
the number of milliseconds spent in allocating, copying and cleaning up uncollected buffers

getAllocations

public static int getAllocations()
Return the total number of buffers allocated by the DirectBufferManager.
Returns:
the total number of allocations

getCleanupMethod

public static int getCleanupMethod()
Return the method used for buffers cleanup when the threshold is met.

The possible return values are:

CLEANUP_FINALIZERS - use Runtime.runFinalization() (default);
CLEANUP_GC - use Runtime.gc();
CLEANUP_NONE - do not perform any cleanup.
Returns:
one of the CLEANUP_* constants representing the cleanup method

setCleanupMethod

protected static void setCleanupMethod(int nCleanupMethod)
Set the method to be used for buffers cleanup when the threshold is met.
Parameters:
nCleanupMethod - a value representing the cleanup method; valid values are the CLEANUP_* constants
Throws:
java.lang.IllegalArgumentException - if passed value is not a valid CLEANUP_* constant

getCleanupThreshold

public static float getCleanupThreshold()
Return the value used to calculate the size threshold for the uncollected buffers that triggers a cleanup operation. Cleanup is performed when the total size of uncollected memory has grown over the product of this value and the maximum Java heap size.
Returns:
a value between 0.0 and 1.0 used to calculate the cleanup frequency

setCleanupThreshold

protected static void setCleanupThreshold(float flCleanupThreshold)
Determines how often, to run the cleanupBuffers() method. Cleanup is performed when the uncollected memory has grown over the product of this value and the maximum Java heap size.
Parameters:
flCleanupThreshold - a value between 0.0 and 1.0 used to calculate the cleanup frequency
Throws:
java.lang.IllegalArgumentException - if the passed value is not valid

Skip navigation links

Oracle® Coherence Java API Reference
Release 3.7.0.0

E18683-01


Copyright © 2000, 2011, Oracle and/or its affiliates. All rights reserved.