As it turns out, all of my problems appear to have been caused by the same source:
I was using reactivate() instead of sim.reactivate() with the Object Oriented API.
This resulted in my GetsPassivated instances not being reactivated, which appears to have been responsible for the memory leak somehow. I'm guessing it was just that I had a bunch of passivated Process instances hanging around, and since they hadn't completed there PEMs they weren't being garbage collected. Stefan, perhaps you can comment on this?
Also, a way to solve my challenging problem of competition for units of inventory is what I originally had implemented:1) Put the GetsPassivated instances in a list. 2) Passivate the GetsPassivated instances.3) Have another process filter through the list for the instance that meets the desired criteria (waiting the longest, or at the nearest location).4) Assign them an attribute value that will tell them where to look for a unit of inventory (while they are passivated).5) Reactivate the GetsPassivated instances.