Using a memory profiler, we found the memory leak:
it is IronEye SQL (www.irongrid.com).
IronEye SQL 1.2 creates millions of instances, consuming gigs of memory ...
Hope this analysis helps others in the future.
At first, I think, you should consider if you need to use EJB or not. For the purpose of just import data into database, you should use anothe way, such as SQLloader in oracle.
I cannot imagine 200,000 ejb for one transaction.