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 > >
