This chapter discusses object life cycle, in particular with respect to concurrency. The majority of examples in this chapter use C++. However, the issues discussed here apply equally to all programming languages. Moreover, object life cycle is a surprisingly complex topic, so we suggest that you read this chapter in detail, regardless of your choice of programming language.
Sections 34.2 through
34.4 discuss the fundamentals of object life cycle, in particular, what it means for an object to exist and not exist and how life cycle relates to proxies, servants, and Ice objects.
Section 34.5 covers object creation and
Section 34.6 discusses object destruction, with particular emphasis on concurrency issues.
Section 34.7 discusses alternative approaches to object destruction and
Section 34.8 discusses a number of architectural issues with respect to object identity.
Section 34.9 presents an implementation of the file system application with life cycle support in C++ and Java and, finally,
Section 34.10 shows how to deal with objects that are abandoned by clients.