Uploaded image for project: 'EJB 3.0'
  1. EJB 3.0
  2. EJBTHREE-736

Duplicating _$$_javassist_ classes after remote - call - OutOfMemory: PermGen

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Blocker Blocker
    • AS 4.2.0 GA
    • EJB 3.0 RC9 - FD
    • None
    • None

      PermGen in EJB3 client aplication by remote interface.
      The application is as sample as it can be:
      -get remote interface of stateless EJB3 (by JNDI)

      • ask 1000 times to get a Collection (List) of 10 EntityBeans.

      After 255 there is OutOfMemory: PermGen.
      JVM options changes nothing (eventualy more PermSpace => longer run).

      The reason looks like the Javassist create lazyinitializer classes for every EntityBean retrived from the server.

      So: When I debug on server-side, I got before sending Entity to client:
      I got:
      myEntity[0].id=143534
      myEntity[0].flow=<FlowEntity_$$_javassist_7> 13434
      ...
      myEntity[0].user=<UserEntity_$$_javassist_15>...
      myEntity[0].stage=<StageEntity_$$_javassist_17>...

      And every remote call the class names (name)$..._javassist(index) got the same
      indexes (7,15,17) on server side (end every entity in returned collections of entities)

      But when I debug on client site - after return from remote call - the indexes of
      all returned entities are different (Each next increments index).

      So after first call I got:

      myEntity[0].id=143534
      myEntity[0].flow=<FlowEntity_$$_javassist_0>...
      ...
      myEntity[0].user=<UserEntity_$$_javassist_1>...
      myEntity[0].stage=<StageEntity_$$_javassist_2>...
      ...
      myEntity[1].id=143534
      myEntity[1].flow=<FlowEntity_$$_javassist_3>
      ...
      myEntity[1].user=<UserEntity_$$_javassist_4>...
      myEntity[1].stage=<StageEntity_$$_javassist_5>...
      ...

      After secund call:

      myEntity[0].id=143534
      myEntity[0].flow=<FlowEntity_$$_javassist_6>...
      ...
      myEntity[0].user=<UserEntity_$$_javassist_7>...
      myEntity[0].stage=<StageEntity_$$_javassist_8>...
      ...
      myEntity[1].id=143534
      myEntity[1].flow=<FlowEntity_$$_javassist_9>
      ...
      myEntity[1].user=<UserEntity_$$_javassist_10>...
      myEntity[1].stage=<StageEntity_$$_javassist_11>...
      ...

      And so on... ... and permGen after 260 iterations...

      I have not idea, how to deal with that...

            Unassigned Unassigned
            ptabor_jira Piotr Tabor (Inactive)
            Votes:
            5 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved: