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 35.2 through
35.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 35.5 covers object creation and
Section 35.6 discusses object destruction, with particular emphasis on concurrency issues.
Section 35.7 discusses alternative approaches to object destruction and
Section 35.8 examines the trade-off between increased parallelism and complexity with respect to object life cycle and
Section 35.9 discusses a number of architectural issues with respect to object identity.
Section 35.10 presents an implementation of the file system application with life cycle support in C++ and Java and, finally,
Section 35.11 shows how to deal with objects that are abandoned by clients.