JProfiler提供实时调用树视图,因此您可以实时查看使用CPU的内容并深入了解详细信息.随时将计数重置为零,冲洗,重复.
我目前没有这个工具,并试图通过免费/开放替代方案.jvisualvm和NetBeans探查器具有静态快照调用树和实时平面视图.似乎有理由会有一个实时的调用树视图(或作为一个插件),但我似乎找不到一个.
这种功能仅适用于商业分析器吗?
谢谢.
我有一个很长的操作,我想在JProfiler(或其他建议)中分析,但该方法是非常递归的,因此CPU视图中的树视图没有太大帮助.它显示了我这样的CPU时间:
beginOperation 100%
|- recursiveMethod 99%
| | - recursiveMethod 98%
| | | - recursiveMethod 97%
| | | | - ...more recursion
| | |- otherMethods 1%
| | - otherMethod 1%
| - otherMethods 1%
Run Code Online (Sandbox Code Playgroud)
你看,recursiveMethod真的不需要任何时间.相反,它otherMethods占用了时间,是我想要描述的.我理想的观点显示recursiveMethod接近0%的时间,并且otherMethods合并到接近100%.
那么在JProfiler中是否有任何方法可以将此视图向上滚动,以便我可以更清楚地查看我的CPU时间花费在哪里?有没有人建议另一个可以做到这一点的探查器?
注意:我正在使用JProfiler 6,但如果另一个版本可以执行此操作,则可能会升级.
谢谢!
如何使用JProfiler在java中查找内存泄漏?过去一周我一直在JProfiler工作,在Web应用程序中查找内存泄漏.我阅读了一些手册并看了一些文章,它说看到所有对象和分配对象视图中的内存使用情况,并使用分配热点,你可以找到内存泄漏.我查看了它,发现了char,string,bytes使用的大量内存.由于我是一个更新鲜的我不知道如何计算这个并解决内存泄漏.请帮帮我..
提前致谢...
我一直在使用JProfiler来分析一段通过JNI调用本机C代码的Java代码,我从"CPU视图"窗口得到了奇怪的结果.特别是,"调用树"选项卡上的信息告诉我,调用本机代码的Java方法占用运行时间的最大部分,但"热点"选项卡甚至根本不列出该方法.我也注意到org.joda.time类的一个类似的故事,据报道它有相当大的CPU但没有被报告为热点,我想知道这是因为他们花了很多时间调用原生日期转换代码.
任何洞察这个问题将不胜感激.
编辑:我刚刚发现了一篇非常令人不安的学术论文,题为"评估Java Profilers的准确性"(我会提供一个链接,但似乎科罗拉多大学服务器引用此文件的Google结果现在非常不满意,所以我不得不从谷歌的"快速查看"链接中删除一份副本.我怀疑本机方法的问题在于它们被过度计数,因为它们有很多调用,它们很短并且调用很可能导致屈服点; 但是,我不确定是否同样适用于时间转换例程.请注意,在同一测试运行中使用检测分析和采样分析时,我会得到明显不同的结果,并且检测结果与我的直觉更好地吻合.我推荐给那些曾经发现自己在分析运行结果上摸不着头脑的人.仍然希望有人能够获得更多关于此的信息; "剖析器错了"并不是一个非常令人欣慰的结果.
编辑2:看起来像colorado.edu已经整理出来,这里是链接:http://www-plan.cs.colorado.edu/klipto/mytkowicz-pldi10.pdf
我正在对我的应用程序进行JProfiling以分析高CPU使用率.用户登录时CPU使用率为100%(在服务器上).所以开始分析我的应用程序.
我在堆转储中找到的以下查询字符串.不仅这4个查询,转储中有数百个这样的查询.
java.lang.String (0x3262b1) ["/* load com.v4common.shared.beans.transaction.ControlTransaction */ select controltra0_.id as id47_48_, controltra0_.form_transaction_id as form2_47_48_, controltra0_.string_value as string3_47_48_, c"] 129 kB (0 %)
java.lang.String (0x310b2f) ["/* load com.v4common.shared.beans.transaction.ReportTransaction */ select reporttran0_.id as id158_45_, reporttran0_.report_id as report2_158_45_, reporttran0_.norm_id as norm3_158_45_, reporttran0_.d"] 124 kB (0 %)
java.lang.String (0x312222) ["/* load com.v4common.shared.beans.transaction.ReportItemTransaction */ select reportitem0_.id as id160_41_, reportitem0_.report_structure as report2_160_41_, reportitem0_.grid_row_criteria as grid3_16"] 110 kB (0 %)
java.lang.String (0x30c104) ["/* load com.v4common.shared.beans.Reports.EsenderCSReport */ select esendercsr0_.id as id117_36_, …Run Code Online (Sandbox Code Playgroud) 因为我需要分析应用程序在不允许GUI的远程机器中运行.我使用JProfiler8启动了远程会话分析,并在远程主机中运行/ bin/jpenable代理.成功分析后,我需要停止远程jpenable jprofiler8代理.我怎样才能做到这一点?
为确保以前启动的代理程序仍处于运行状态,我再次运行/ bin/jpenable代理程序.现在我没有看到以前绑定的JVM.所以我认为它已经与之前的代理绑定.
嗨,我是Jprofiler和Linux的新手.我试图通过安装在Windows机器上的Jprofiler远程分析来监视安装在linux机器上的Apache Tomcat服务器.请详细帮助我完成程序.我尝试了所有可以从谷歌获得的帮助,但仍然卡住..任何帮助将不胜感激.提前致谢.
是否可以测量正在运行的 JVM 中的缓存未命中?
更好的是,有没有办法在 JProfiler 中获取这些指标?或者任何其他分析器?
我已经探索了 JProfiler 选项,但还没有看到对此的检查。
我是使用 JProfiler 的新手。我正在对应用程序进行远程分析。当我单击任何对象的显示源时,它会显示“在源路径中找不到源文件”,因为远程机器上只有二进制文件。有什么办法可以链接源代码。仅供参考,我可以访问可以使用的代码。