javax.realtime
Class MemoryParameters

java.lang.Object
  |
  +--javax.realtime.MemoryParameters

public class MemoryParameters
extends java.lang.Object

Memory parameters can be given on the constructor of RealtimeThread and AsyncEventHandler. These can be used both for the purposes of admission control by the scheduler and for the purposes of pacing the garbage collector to satisfy all of the thread allocation rates.

When a reference to a MemoryParameters object is given as a parameter to a constructor, the MemoryParameters object becomes bound to the object being created. Changes to the values in the MemoryParameters object affect the constructed object. If given to more than one constructor, then changes to the values in the MemoryParameters object affect all of the associated objects. Note that this is a one-to-many relationship and not a many-to-many.

Caution: This class is explicitly unsafe in multithreaded situations when it is being changed. No synchronization is done. It is assumed that users of this class who are mutating instances will be doing their own synchronization at a higher level.


Field Summary
static long NO_MAX
          Specifies no maximum limit.
 
Constructor Summary
MemoryParameters(long maxMemoryArea, long maxImmortal)
          Create a MemoryParameters object with the given values.
MemoryParameters(long maxMemoryArea, long maxImmortal, long allocationRate)
          Create a MemoryParameters object with the given values.
 
Method Summary
 long getAllocationRate()
          Get the allocation rate.
 long getMaxImmortal()
          Get the limit on the amount of memory the thread may allocate in the immortal area.
 long getMaxMemoryArea()
          Get the limit on the amount of memory the thread may allocate in the memory area.
 void setAllocationRate(long allocationRate)
          A limit on the rate of allocation in the heap.
 boolean setAllocationRateIfFeasible(int allocationRate)
          Change the limit on the rate of allocation in the heap.
 boolean setMaxImmortal(long maximum)
          A limit on the amount of memory the thread may allocate in the immortal area.
 boolean setMaxMemoryArea(long maximum)
          A limit on the amount of memory the thread may allocate in the memory area.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

NO_MAX

public static final long NO_MAX
Specifies no maximum limit.
Constructor Detail

MemoryParameters

public MemoryParameters(long maxMemoryArea,
                        long maxImmortal)
                 throws java.lang.IllegalArgumentException
Create a MemoryParameters object with the given values.
Parameters:
maxMemoryArea - A limit on the amount of memory the thread may allocate in the memory area. Units are in bytes. If zero, no allocation allowed in the memory area. To specify no limit, use NO_MAX or a value less than zero.
maxImmortal - A limit on the amount of memory the thread may allocate in the immortal area. Units are in bytes. If zero, no allocation allowed in immortal. To specify no limit, use NO_MAX or a value less than zero.

MemoryParameters

public MemoryParameters(long maxMemoryArea,
                        long maxImmortal,
                        long allocationRate)
                 throws java.lang.IllegalArgumentException
Create a MemoryParameters object with the given values.
Parameters:
maxMemoryArea - A limit on the amount of memory the thread may allocate in the memory area. Units are in bytes. If zero, no allocation allowed in the memory area. To specify no limit, use NO_MAX or a value less than zero.
maxImmortal - A limit on the amount of memory the thread may allocate in the immortal area. Units are in bytes. If zero, no allocation allowed in immortal. To specify no limit, use NO_MAX or a value less than zero.
allocationRate - A limit on the rate of allocation in the heap. Units are in bytes per second. If zero, no allocation is allowed in the heap. To specify no limit, use NO_MAX or a value less than zero.
Method Detail

getAllocationRate

public long getAllocationRate()
Get the allocation rate. Units are in bytes per second.

getMaxImmortal

public long getMaxImmortal()
Get the limit on the amount of memory the thread may allocate in the immortal area. Units are in bytes.

getMaxMemoryArea

public long getMaxMemoryArea()
Get the limit on the amount of memory the thread may allocate in the memory area. Units are in bytes.

setAllocationRate

public void setAllocationRate(long allocationRate)
A limit on the rate of allocation in the heap.
Parameters:
allocationRate - Units are in bytes per second. If zero, no allocation is allowed in the heap. To specify no limit, use NO_MAX or a value less than zero.

setMaxImmortal

public boolean setMaxImmortal(long maximum)
A limit on the amount of memory the thread may allocate in the immortal area.
Parameters:
maxImmortal - Units are in bytes. If zero, no allocation allowed in immortal. To specify no limit, use NO_MAX or a value less than zero.
Returns:
False if any of the threads have already allocated more than the given value. In this case the call has no effect.

setMaxMemoryArea

public boolean setMaxMemoryArea(long maximum)
A limit on the amount of memory the thread may allocate in the memory area.
Parameters:
maximum - Units are in bytes. If zero, no allocation allowed in the memory area. To specify no limit, use NO_MAX or a value less than zero.
Returns:
False if any of the threads have already allocated more than the given value. In this case the call has no effect.

setAllocationRateIfFeasible

public boolean setAllocationRateIfFeasible(int allocationRate)
Change the limit on the rate of allocation in the heap. If this MemoryParameters object is currently associated with one or more realtime threads that have been passed admission control, this change in allocation rate will be submitted to admission control. The scheduler (in conjunction with the garbage collector) will either admit all the effected threads with the new allocation rate, or leave the allocation rate unchanged and cause setAllocationRateIfFeasible to return false.
Parameters:
allocationRate - Units are in bytes per second. If zero, no allocation is allowed in the heap. To specify no limit, use NO_MAX or a value less than zero.
Returns:
true if the request was fulfilled.