javax.realtime
Class MemoryArea

java.lang.Object
  extended byjavax.realtime.MemoryArea
Direct Known Subclasses:
Arena, HeapMemory, ImmortalMemory, MethodAreaMemory, PrimordialMemory, ScopedMemory

public abstract class MemoryArea
extends Object

MemoryArea is the abstract base class of all classes dealing with the representations of allocatable memory areas, including the immortal memory area, physical memory and scoped memory areas.

Author:
Angelo Corsaro

Field Summary
protected  Runnable logic
           
protected  MemoryArea parent
           
protected  long sizeInBytes
           
 
Constructor Summary
protected MemoryArea()
           
protected MemoryArea(long sizeInBytes)
          Creates a new MemoryArea instance.
protected MemoryArea(long sizeInBytes, Runnable logic)
          Creates a new MemoryArea instance.
protected MemoryArea(SizeEstimator size)
          Creates a new MemoryArea instance.
protected MemoryArea(SizeEstimator size, Runnable logic)
          Creates a new MemoryArea instance.
 
Method Summary
 void enter()
          Associate this memory area to the current real-time thread for the duration of the execution of the run() method of the java.lang.Runnable passed at construction time.
 void enter(Runnable logic)
          Associate this memory area to the current real-time thread for the duration of the execution of the run() method of the given Runnable.
 void executeInArea(Runnable logic)
          Execute the run method from the logic parameter using this memory area as the current allocation context.
protected  void finalize()
           
protected abstract  void fini()
           
static MemoryArea getMemoryArea(Object object)
          Returns the MemoryArea in which the given object is located.
protected  void guardedRun(Runnable logic)
          Run the given logic and, if it exits exceptionally, check to ensure that the thrown exception is valid in the parent scope.
protected abstract  void init()
           
abstract  long memoryConsumed()
          An exact count, in bytes, of the all of the memory currently used by the system for the allocated objects.
abstract  long memoryRemaining()
          An approximation to the total amount of memory currently available for future allocated objects, measured in bytes.
 Object newArray(Class type, int number)
          Allocate an array of T in this memory area.
 Object newInstance(Class type)
          Allocate an object in this memory area.
 Object newInstance(Constructor ctor, Object[] args)
          Allocates an object in this memory area.
 long size()
          Query the size of the memory area.
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

sizeInBytes

protected long sizeInBytes

logic

protected Runnable logic

parent

protected MemoryArea parent
Constructor Detail

MemoryArea

protected MemoryArea()

MemoryArea

protected MemoryArea(long sizeInBytes)
Creates a new MemoryArea instance.

Parameters:
sizeInBytes - The size of MemoryArea to allocate, in bytes.

MemoryArea

protected MemoryArea(long sizeInBytes,
                     Runnable logic)
Creates a new MemoryArea instance.

Parameters:
sizeInBytes - The size of MemoryArea to allocate, in bytes.
logic - The run() method of this object will be called whenever enter() called.

MemoryArea

protected MemoryArea(SizeEstimator size)
Creates a new MemoryArea instance.

Parameters:
size - A SizeEstimator object which indicates the amount of memory required by this MemoryArea.

MemoryArea

protected MemoryArea(SizeEstimator size,
                     Runnable logic)
Creates a new MemoryArea instance.

Parameters:
size - A SizeEstimator object which indicates the amount of memory required by this MemoryArea.
logic - -The run() method of this object will be called whenever enter() is called.
Method Detail

enter

public void enter()
           throws ScopedCycleException
Associate this memory area to the current real-time thread for the duration of the execution of the run() method of the java.lang.Runnable passed at construction time. During this bound period of execution, all objects are allocated from the memory area until another one takes effect, or the enter() method is exited. A runtime exception is thrown if this method is called from thread other than a RealtimeThread or NoHeapRealtimeThread.

Throws:
ScopedCycleException - If entering this ScopedMemory would violate the single parent rule.

enter

public void enter(Runnable logic)
           throws ScopedCycleException
Associate this memory area to the current real-time thread for the duration of the execution of the run() method of the given Runnable. During this bound period of execution, all objects are allocated from the memory area until another one takes effect, or the enter() method is exited. A runtime exception is thrown if this method is called from thread other than a RealtimeThread or NoHeapRealtimeThread.

Parameters:
logic - The Runnable object whose run() method should be invoked.
Throws:
ScopedCycleException - If entering this ScopedMemory would violate the single parent rule.

guardedRun

protected final void guardedRun(Runnable logic)
Run the given logic and, if it exits exceptionally, check to ensure that the thrown exception is valid in the parent scope. If so, rethrow; otherwise, throw a ThrowBoundaryError instead.

Parameters:
logic - The Runnable object whose run() method should be invoked and checked for exceptional exit.

executeInArea

public void executeInArea(Runnable logic)
                   throws InaccessibleAreaException
Execute the run method from the logic parameter using this memory area as the current allocation context. If the memory area is a scoped memory type, this method behaves as if it had moved the allocation context up the scope stack to the occurrence of the memory area. If the memory area is heap or immortal memory, this method behaves as if the run method were running in that memory type with an empty scope stack.

Parameters:
logic - The runnable object whose run() method should be executed.
Throws:
InaccessibleAreaException - The memory area is not in the thread s scope stack.

getMemoryArea

public static MemoryArea getMemoryArea(Object object)
Returns the MemoryArea in which the given object is located.

Parameters:
object - the object for which the associated memory area will be provided.
Returns:
The MemoryArea of the object.

memoryConsumed

public abstract long memoryConsumed()
An exact count, in bytes, of the all of the memory currently used by the system for the allocated objects.

Returns:
The amount of memory consumed in bytes.

memoryRemaining

public abstract long memoryRemaining()
An approximation to the total amount of memory currently available for future allocated objects, measured in bytes.

Returns:
The amount of remaining memory in bytes.

newArray

public Object newArray(Class type,
                       int number)
                throws IllegalAccessException,
                       InstantiationException
Allocate an array of T in this memory area.

Parameters:
type - The class of the elements of the new array.
number - The number of elements in the new array.
Returns:
A new array of class type, of number elements.
Throws:
IllegalAccessException - The class or initializer is inaccessible.
InstantiationException - The array cannot be instantiated.

newInstance

public Object newInstance(Class type)
                   throws IllegalAccessException,
                          InstantiationException
Allocate an object in this memory area.

Parameters:
type - The class of which to create a new instance.
Returns:
A new instance of class type.
Throws:
IllegalAccessException - The class or initializer is inaccessible.
InstantiationException - The specified class object could not be instantiated. Possible causes are: it is an interface, it is abstract, it is an array, or an exception was thrown by the constructor.

newInstance

public Object newInstance(Constructor ctor,
                          Object[] args)
                   throws IllegalAccessException,
                          InstantiationException
Allocates an object in this memory area.

Parameters:
ctor - the constructor used to create the new instance.
args - the argument to be passed to the constructor.
Returns:
the object allocated
Throws:
IllegalAccessException - The class or initializer is inaccessible.
InstantiationException - The specified class object could not be instantiated. Possible causes are: it is an interface, it is abstract, it is an array, or an exception was thrown by the constructor.

size

public long size()
Query the size of the memory area. The returned value is the current size. Current size may be larger than initial size for those areas that are allowed to grow.

Returns:
the size of the memory area in bytes.

init

protected abstract void init()

fini

protected abstract void fini()

finalize

protected void finalize()


jRate is developed and maintained by the jRate project development team.
Copyright (c) 2001-2005 Angelo Corsaro and Morgan Deters.