\addvspace {10\p@ } \addvspace {10\p@ } \contentsline {figure}{\numberline {2.1}{\ignorespaces System elements}}{6} \contentsline {figure}{\numberline {2.2}{\ignorespaces Create two new objects, and add a reference to one}}{8} \contentsline {figure}{\numberline {2.3}{\ignorespaces All references to object {\em a} are deleted}}{8} \contentsline {figure}{\numberline {2.4}{\ignorespaces Object {\em a} no longer has any references, and is therefore garbage}}{8} \contentsline {figure}{\numberline {2.5}{\ignorespaces Reference Counting with cyclic garbage}}{9} \contentsline {figure}{\numberline {2.6}{\ignorespaces Start marking from the root set}}{11} \contentsline {figure}{\numberline {2.7}{\ignorespaces Then sweep and remove unwanted objects}}{11} \contentsline {figure}{\numberline {2.8}{\ignorespaces Start flipping objects into the other half of memory...}}{13} \contentsline {figure}{\numberline {2.9}{\ignorespaces And ignore the rest when you are done}}{13} \addvspace {10\p@ } \contentsline {figure}{\numberline {3.1}{\ignorespaces Remote Procedure Calls}}{18} \contentsline {figure}{\numberline {3.2}{\ignorespaces OMG Reference Model Architecture}}{20} \contentsline {figure}{\numberline {3.3}{\ignorespaces An example of using the struct type in IDL}}{23} \contentsline {figure}{\numberline {3.4}{\ignorespaces An example of using the union type in IDL}}{23} \contentsline {figure}{\numberline {3.5}{\ignorespaces An example of using the enumeration type in IDL}}{23} \contentsline {figure}{\numberline {3.6}{\ignorespaces Illegal IDL code due to overloaded methods}}{25} \contentsline {figure}{\numberline {3.7}{\ignorespaces Illegal IDL code due to inheriting multiple methods with the same name}}{26} \contentsline {figure}{\numberline {3.8}{\ignorespaces Postconditions in ADL}}{26} \contentsline {figure}{\numberline {3.9}{\ignorespaces A simple, yet misleading interface definition}}{27} \contentsline {figure}{\numberline {3.10}{\ignorespaces A more complete interface definition}}{28} \contentsline {figure}{\numberline {3.11}{\ignorespaces Catching a derived exception}}{29} \contentsline {figure}{\numberline {3.12}{\ignorespaces The primary interface for specifying CPU requirements using TAO}}{30} \contentsline {figure}{\numberline {3.13}{\ignorespaces Object definition in TINA-C's ODL}}{31} \contentsline {figure}{\numberline {3.14}{\ignorespaces Possible IDL support for static non-blocking calls}}{32} \contentsline {figure}{\numberline {3.15}{\ignorespaces Common Object Request Broker Architecture}}{33} \contentsline {figure}{\numberline {3.16}{\ignorespaces A basic MIDL interface}}{37} \contentsline {figure}{\numberline {3.17}{\ignorespaces Java's Remote Method Invocation System}}{38} \addvspace {10\p@ } \contentsline {figure}{\numberline {4.1}{\ignorespaces Remote object {\em c} creates a reference to {\em a}}}{40} \contentsline {figure}{\numberline {4.2}{\ignorespaces Then {\em c} sends {\em a} an increment message, and {\em b} sends it a decrement message soon after}}{40} \contentsline {figure}{\numberline {4.3}{\ignorespaces The decrement message arrives first, and {\em c} has a reference to a non-existant object}}{41} \addvspace {10\p@ } \contentsline {figure}{\numberline {5.1}{\ignorespaces The ORB always maintains the reference}}{47} \contentsline {figure}{\numberline {5.2}{\ignorespaces An registered object is {\em checked} periodically, but will eventually have no references}}{50} \contentsline {figure}{\numberline {5.3}{\ignorespaces The collector calls {\tt dispose}, and the object can then be collected by it's language dependant collector}}{50} \contentsline {figure}{\numberline {5.4}{\ignorespaces Checkable Object Interface}}{51} \contentsline {figure}{\numberline {5.5}{\ignorespaces Collectable Object Interface}}{51} \contentsline {figure}{\numberline {5.6}{\ignorespaces Garbage Collector Object Interface}}{52} \contentsline {figure}{\numberline {5.7}{\ignorespaces The processing of a GCIDL compiler}}{53} \contentsline {figure}{\numberline {5.8}{\ignorespaces Extended IDL Sample Code}}{54} \contentsline {figure}{\numberline {5.9}{\ignorespaces Clients referencing an account}}{55} \contentsline {figure}{\numberline {5.10}{\ignorespaces Output of the sample program on the client side}}{57} \contentsline {figure}{\numberline {5.11}{\ignorespaces Output of the sample program on the OrbixWeb daemon}}{57} \contentsline {figure}{\numberline {5.12}{\ignorespaces Output when garbage collection runs}}{58} \addvspace {10\p@ } \addvspace {10\p@ }