Features:
Transactional.
Persisted in shared memory.
Shared across multiple JVMs.
Cost:
Compared to a POJO, a Managed object will consume additional processing associated with providing transactional coherency, additional temporary shared memory resources associated with providing rollback capability, and shared memory associated with persisting the object.
Usage:
As a replacement for placing object state in a database.
To transactionally synchronize multi-threaded access to shared application data.
To provide in-memory objects which can be navigated to with keys.
When application state needs to be persisted across multiple invocations of the JVM.
When application state needs to be shared between multiple JVMs.
Avoid:
For temporary objects.
For data which does not need to be persisted.