Activation is a db4o mechanism which controls object instantiation. Why is it necessary? Let's look at an example of a stored tree structure. There's one root object, which has a bunch nodes. Each node has again a few subnodes and so on and so forth. What happens when you run a query and retrieve the root object? All the sub-objects will have to be created in the memory! If the tree is very large, this will fill up your memory.
Luckily db4o does not behave like this.When a query retrieves objects, their fields are loaded into memory (activated in db4o terms) only to a certain activation depth. In this case depth means "number of member references away from the original object". All the fields at lower levels, below activation depth are set to null or to default values. So db4o doesn't load the whole object graph from the database. Instead, db4o loads only parts of the object graph you're interested in.
Activation occurs in the following cases:
For a concrete example of the activation process: See "Activation In Action"
If you want to automate the activation process: See "Transparent Activation"