Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[aspectj-users] aspectj and jsp load

Hi,

I am using LTW in our web application (appserver=Weblogic 10), during the first load of the jsp into the jvm we found out that aspectj is causing significant overhead.
we precompiled our jsp, if we disable aspectj the jsp is loaded less than 1s, but if we enable aspectj the jsp is loaded >7s (approximately 10s).

here is how we enable/disable aspectj:
enable    : add -javaagent:${LIB}/aspectjweaver.jar
disable : simply take out the javaagent

Is this overhead expected?

I took the stacktrace and found a lot of aspectj occurences:
"[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=3 tid=0x02861ee8 nid=0x38 runnable [0x534f9000]
   java.lang.Thread.State: RUNNABLE
    . . . .
    at java.lang.ClassLoader.getResource(ClassLoader.java:998)
    at weblogic.utils.classloaders.GenericClassLoader.getResource(GenericClassLoader.java:187)
    at weblogic.utils.classloaders.ChangeAwareClassLoader.getResource(ChangeAwareClassLoader.java:112)
    at java.lang.ClassLoader.getResource(ClassLoader.java:998)
    at weblogic.utils.classloaders.GenericClassLoader.getResource(GenericClassLoader.java:187)
    at org.aspectj.apache.bcel.util.ClassLoaderRepository.toURL(ClassLoaderRepository.java:276)
    at org.aspectj.apache.bcel.util.ClassLoaderRepository.loadClass(ClassLoaderRepository.java:289)
    at org.aspectj.weaver.bcel.BcelWorld.lookupJavaClass(BcelWorld.java:390)
    at org.aspectj.weaver.bcel.BcelWorld.resolveDelegate(BcelWorld.java:373)
    at org.aspectj.weaver.ltw.LTWWorld.resolveDelegate(LTWWorld.java:111)
    at org.aspectj.weaver.World.resolveToReferenceType(World.java:452)
    at org.aspectj.weaver.World.resolve(World.java:298)
    at org.aspectj.weaver.patterns.WildTypePattern.lookupTypeInWorld(WildTypePattern.java:801)
    at org.aspectj.weaver.patterns.WildTypePattern.lookupTypeInWorldIncludingPrefixes(WildTypePattern.java:776)
    at org.aspectj.weaver.patterns.WildTypePattern.resolveBindingsFromFullyQualifiedTypeName(WildTypePattern.java:741)
    at org.aspectj.weaver.patterns.WildTypePattern.resolveBindings(WildTypePattern.java:676)
    at org.aspectj.weaver.patterns.SignaturePattern.resolveBindings(SignaturePattern.java:81)
    at org.aspectj.weaver.patterns.KindedPointcut.resolveBindings(KindedPointcut.java:353)
    at org.aspectj.weaver.patterns.OrPointcut.resolveBindings(OrPointcut.java:82)
    at org.aspectj.weaver.patterns.OrPointcut.resolveBindings(OrPointcut.java:83)
    at org.aspectj.weaver.patterns.OrPointcut.resolveBindings(OrPointcut.java:83)
    at org.aspectj.weaver.patterns.OrPointcut.resolveBindings(OrPointcut.java:83)
    at org.aspectj.weaver.patterns.OrPointcut.resolveBindings(OrPointcut.java:83)
    at org.aspectj.weaver.patterns.OrPointcut.resolveBindings(OrPointcut.java:83)
    at org.aspectj.weaver.patterns.OrPointcut.resolveBindings(OrPointcut.java:83)
    at org.aspectj.weaver.patterns.NotPointcut.resolveBindings(NotPointcut.java:81)
    at org.aspectj.weaver.patterns.AndPointcut.resolveBindings(AndPointcut.java:78)
    at org.aspectj.weaver.patterns.AndPointcut.resolveBindings(AndPointcut.java:79)
    at org.aspectj.weaver.patterns.Pointcut.resolve(Pointcut.java:188)
    at org.aspectj.weaver.bcel.AtAjAttributes$LazyResolvedPointcutDefinition.getPointcut(AtAjAttributes.java:1843)
    at org.aspectj.weaver.patterns.ReferencePointcut.concretize1(ReferencePointcut.java:354)
    at org.aspectj.weaver.patterns.Pointcut.concretize(Pointcut.java:228)
    at org.aspectj.weaver.patterns.Pointcut.concretize(Pointcut.java:210)
    at org.aspectj.weaver.Advice.concretize(Advice.java:396)
    at org.aspectj.weaver.bcel.BcelAdvice.concretize(BcelAdvice.java:110)
    at org.aspectj.weaver.CrosscuttingMembers.addShadowMunger(CrosscuttingMembers.java:98)
    at org.aspectj.weaver.CrosscuttingMembers.addShadowMungers(CrosscuttingMembers.java:90)
    at org.aspectj.weaver.ResolvedType.collectCrosscuttingMembers(ResolvedType.java:749)
    at org.aspectj.weaver.CrosscuttingMembersSet.addOrReplaceAspect(CrosscuttingMembersSet.java:85)
    at org.aspectj.weaver.CrosscuttingMembersSet.addOrReplaceAspect(CrosscuttingMembersSet.java:69)
    at org.aspectj.weaver.bcel.BcelWeaver.addLibraryAspect(BcelWeaver.java:198)
    at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerAspects(ClassLoaderWeavingAdaptor.java:464)
    at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerDefinitions(ClassLoaderWeavingAdaptor.java:288)
    at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.initialize(ClassLoaderWeavingAdaptor.java:174)
    at org.aspectj.weaver.loadtime.Aj$ExplicitlyInitializedClassLoaderWeavingAdaptor.initialize(Aj.java:271)
    at org.aspectj.weaver.loadtime.Aj$ExplicitlyInitializedClassLoaderWeavingAdaptor.getWeavingAdaptor(Aj.java:276)
    at org.aspectj.weaver.loadtime.Aj$WeaverContainer.getWeaver(Aj.java:254)
    at org.aspectj.weaver.loadtime.Aj.preProcess(Aj.java:90)
    - locked <0x5eb19378> (a weblogic.servlet.jsp.JspClassLoader)
    at org.aspectj.weaver.loadtime.ClassPreProcessorAgentAdapter.transform(ClassPreProcessorAgentAdapter.java:54)

    . . . .
   
I also enabled -debug -verbose -showWeaveInfo and found out that there were lots of classloaders was registered and initialized. From total of 98, 50 of them are JSPClassLoader, is there anyway to exclude these JSPClassLoader instances?

Thanks, in advance


Back to the top