]
Dimitris Andreadis updated JBAS-3849:
-------------------------------------
Fix Version/s: JBossAS-5.0.0.Beta1
JBossAS-4.2.0.CR1
JBossAS-4.0.5.SP1
Assignee: Steve Ebersole (was: Tom Elrod)
Priority: Critical (was: Blocker)
Scheduling and assigning to Steve.
Duplicating _$$_javassist_ classes after remote - call - OutOfMemory:
PermGen
-----------------------------------------------------------------------------
Key: JBAS-3849
URL:
http://jira.jboss.com/jira/browse/JBAS-3849
Project: JBoss Application Server
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: Remoting
Affects Versions: JBossAS-4.0.4.CR2, JBossAS-4.0.5.CR1, JBossAS-4.0.5.GA,
JBossAS-4.0.4.GA
Environment:
« Hide
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
Windows XP, JVM 1.5.0.09, intel
Reporter: Piotr Tabor
Assigned To: Steve Ebersole
Priority: Critical
Fix For: JBossAS-5.0.0.Beta1, JBossAS-4.2.0.CR1, JBossAS-4.0.5.SP1
Attachments: leaktest.zip.zip
A simple test (Books/Users) to reproduce the problem.
beantestclient - a simple test client application (runnable:
com.newitech.beantest.ejb.Client)
beantest - simple EJB 3 beans.
==========================================================
ANOTHER EXAMPLE AND IDEA OF BUG
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...
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: