It appears that the cause of the heap exhaustion was a series of object relationship errors. In one case, two tables had a correct one-to-many and many-to-one relationship, but the first table had a spurious one-to-one that ostensibly mapped to the same table as the one-to-many. That triggered a heap exhaustion on return until the one-to-one was removed. In another case, one table mapped one-to-many, but the related table instead of many-to-one had one-to-one. That also triggered a heap exhaustion on return until the one-to-one was corrected to read many-to-one.
Have yet another heap exhaustion, apparently related to a unidirectional one-to-one, but haven't corrected that problem yet.
[Message sent by forum member 'franknatoli' (franknatoli)]
http://forums.java.net/jive/thread.jspa?messageID=267865