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
    • Linux Gentoo 2.6.18, JVM 1.5.0.08, 1.5.0.09, amd64
      RedHat Linux EE 4.0. JVM 1.5.0.09, intel

      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: