I actually don’t know very many customers who religiously pay attention to PM size, but if you do have a very large cache, here are some tips that you may find helpful:
(1) I’d recommend that you not start worrying about this problem until it actually happens. This is my recommendation, in general, on performance problems. You can waste a lot of time engineering solutions to problems that may never occur.
(2) If you know that a set of entities will not be reused in your application, you may decide to remove them from the cache (by using PM.Remove).
(3) The same strategy applies if you think that it is extremely unlikely that you will reuse some entities.
(4) A separate Persistence Manager may help you. For example, if you are doing a large and complicated query, you might use a separate PM. After you have performed the query, you might import the few entities you care about to your default PM.
(5) It is non-trivial to Clear or Remove entities from the cache. Although it is easy enough to remove the entities themselves from the cache, it is not always so easy to manage all of the things that reference the entities. For example, you have to worry about EntityLists, Event Handlers, Property Descriptors (to name just a few). If you miss one of these references, your application may crash mysteriously at some later point.