Thanks a lot Balazs for the hints on using JRockit. yes I am aware of performance gains when using JRockit. The issue here is that I need to attach a custom java agent to the vm in order to collect some domain specific data about the performance of a given application. so, going with JRockit is not an option for me at this point.
Any other thoughts? regards, -Nima On Thu, Apr 5, 2012 at 5:31 PM, Balázs Zsoldos <[email protected]>wrote: > Hi, > > I use normally JRockit from BEA (now Oracle). It gives about 1% > performance loss during profiling the application and I have never had a > problem with any application (even with modules like spring or aries-proxy). > > JRockit is free if you use it for testing and development (non-free for > live systems). It does not work as a Java agent but it is a standalone JVM. > Due to the JVM I think it does not need class bytecode manipulation and > other half-working tricks to do profiling. > > After you downloaded and installed it you will find a jrmc folder in the > installation directory. That is a customized eclipse that can connect to > any locally started JRockit JVM without any configuration. > > For me at least it helped a lot in the past and after the agent based > profilers it was like getting into a Ferrari from a Trabant. > > I hope you will find it as useful as I did. > > Regards, > Balazs Zsoldos > Software Architect > Mobile: +36-70/594-92-34 > > Everit Kft. > https://www.everit.biz > > > > > On Fri, Apr 6, 2012 at 1:48 AM, Nima Kaviani <[email protected]>wrote: > >> Hi All, >> >> I am trying to hook a Java profiler agent to an aries application and it >> results in an enormous amount of delay in booting the application to the >> point where all the bundles in the eba are installed and started. >> >> If no profiler is attached, the application launches in about 30 seconds >> or so, but when I hook the profiler the launch takes really long. >> >> Messages that I receive from the debugger are mainly of the following >> form: >> >> [fileinstall-./load] DEBUG >> org.apache.aries.application.resolver.obr.impl.RequirementImpl - Method >> entry: isSatisfied, args >> service:{service=org.ops4j.pax.web.service.WebContainer} >> [fileinstall-./load] DEBUG >> org.apache.aries.application.modelling.impl.ImportedBundleImpl - Method >> entry: getType, args {} >> [fileinstall-./load] DEBUG >> org.apache.aries.application.modelling.impl.ImportedBundleImpl - Method >> exit: getType, returning [bundle] >> [fileinstall-./load] DEBUG >> org.apache.aries.application.resolver.obr.impl.RequirementImpl - Method >> exit: isSatisfied, returning false >> >> I am not quite sure what the combination of application resolver and >> application modeler do but It seems like the aries application resolver and >> the application modeler are analyzing all classes in the application method >> by method which results in a significant overhead when doing profiling! >> >> So my questions are the following: >> >> What is the exact role of ImportBundleImpl and RequirementImpl and are >> they looking into every method of the application? Is there any way to >> mitigate the performance when doing profiling? Are there any intermediate / >> proxy classes made by aries that may lead to profiling to deal with them as >> well? >> >> Finally, is there a reference to the internal behavior of aries resolver >> and modelling bundles that describes their behavior? >> >> any help is very much appreciated. >> >> thanks, >> -Nima >> >> > -- http://nima.magic.ubc.ca
