문제

Currently, I am trying to weed out bottlenecks in my JSF/PrimeFaces web application. In order to do so, I installed VisualVM and its GlassFish plug-in.

I am unable to explicitly "profile" over JMX, but I can generate a "sampling" output. This output, however, shows almost the entire load in an operation called $Proxy245.invoke().

VisualVM sampling output

My own operations (ch.diction.*) and the SQL interaction logic (com.mysql.jdbc.*), which I suspected as bottlenecks in the first place, do not seem to contribute an awful lot to this lack of performance.

The page being displayed is a PrimeFaces datatable with a few hundred paginated records. The number of records does affect the performance significantly, if not exclusively.

So my question is: How can I find out what lies behind $Proxy245.invoke() in order to identify the real bottleneck in this scenario?

Thank you in advance for your advice and best regards

Pascal

도움이 되었습니까?

해결책

The $Proxy245 is a generated proxy class by some AOP framework in your case it's not clear which one. It's used to intercept method calls. Since it's generated, you will not find the actual sources because there aren't any. I suggest you to produce a Thread Dump with VisualVM (Threads tab) and check the stack traces I'm pretty sure you will find this method (maybe not for the first try, but do several dumps). With this you can find the chain of methods which at the end call this (proxy) method.

Also try to Profile the application not only Sample (Profiler tab). With the profiler you can find out if these are several calls to the same method or just one long call that doesn't want to end.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top