This is an interesting thread. I would add that besides the PGA and the UGA there is one more area used by each Oracle process: the CGA (call global area).

The CGA is a subheap of the PGA and this does not depend on whether the UGA is in the PGA or in the SGA.

Most people who use Java should also remember that Java call memory is allocated in the CGA.