Tag: profiling

在哪里下载JMXMP?

我想通过JMX远程通过VisualVM分析Java应用程序。 因为它是一个NAT和防火墙的EC2实例,我不能使用默认的RMI方法,需要使用我必须首先下载的可选JMXMP扩展。 注 – 如果您想使用JMXMP连接器,请下载JSR 160参考实现,并将JMXREMOTE_OPTIONAL.JAR文件添加到您的CLASSPATH中。 您将在JMX REMOTE API指南中找到使用JMXMP连接器的示例,包括JSR 160参考实现。 http://docs.oracle.com/javase/6/docs/technotes/guides/jmx/overview/connectors.html 但是当我去那个页面时,我找不到下载。 事实上,谷歌找不到下载。 我在哪里可以获得这些扩展?

分析Java Spring应用程序

我有一个Spring应用程序,我认为它有一些瓶颈,所以我想用一个分析器来运行它来测量哪些函数花了多少时间。 有关我应该如何做的任何建议? 我正在运行STS,该项目是一个maven项目,我正在运行Spring 3.0.1

Java对象内存使用情况 – ibm jvm 1.4.2

是否有可能在应用程序中找到java中对象的内存使用情况? 我希望在应用程序运行时将对象内存使用作为调试输出的一部分。 我不想使用外部应用程序连接到VM。 我有一个问题,即很少有类占用大量内存并导致内存问题,我的应用程序崩溃了。 我需要找到内存使用情况(我正在使用有限的内存资源)。 编辑:我使用的是java 1.4:/

您使用哪种Java Profiling工具以及您认为哪种工具最好?

想知道stackoverflow社区对各种免费和非免费的Java Profilers和分析工具的看法。

类似HPjmeter的图形工具,用于查看-agentlib:hprof profiling输出

有哪些工具可用于查看内置JVM分析器的输出? 例如,我正在启动我的JVM: -agentlib:hprof=cpu=times,thread=y,cutoff=0,format=a,file=someFile.hprof.txt 这将以hprof(“JAVA PROFILE 1.0.1”)格式生成输出。 过去,我使用HPjmeter以合理的方式查看这些输出文件。 但是,无论出于何种原因,使用当前版本的Sun JVM生成的文件都无法加载到当前版本的HPjmeter中: java.lang.NullPointerException at com.hp.jmeter.f.jb.a(Unknown Source) at com.hp.jmeter.faa(Unknown Source) at com.hp.cajzrun(Unknown Source) Exception in thread “HPeprofDataFileReaderThread” java.lang.AssertionError: null pointer exception from loader at com.hp.jmeter.faa(Unknown Source) at com.hp.cajzrun(Unknown Source) (为什么他们会混淆免费产品的字节码?!) 由此产生两个问题: 有谁知道这个HPjmeter错误的原因? ( 编辑 :是的 – 见下文) 还有哪些其他工具可以读取hprof文件? 为什么Sun没有(有)? 我知道Eclipse TPTP和其他工具可以动态监视JVMTI数据,但我需要一个可以处理生成的hprof文件的解决方案,因为部署的机器只安装了JRE(而不是JDK)。 编辑 :一个非常有帮助的HPjmeter开发人员在HP ITRC论坛上回复了我的问题,表明在-agentlib的错误之前,临时需要将heap=dump包含在-agentlib选项中。 这些信息使HPjmeter再次可行,但我仍然会问这个问题是否有人知道任何其他工具。 编辑 :自HPjmeter 4.0.00版(2009年5月发布)以来,该错误已得到修复。

为什么select()在我的程序中消耗了这么多CPU时间?

我有几个使用MINA的Java应用程序,它们都使用20个MINA线程。 一个应用程序为大约10,000个并发连接提供服 20可能是该应用程序的一个合理的线程数,虽然我还没有完全描述它(这个问题正在进行中)。 另一个应用程序一次只能提供大约15个连接,但启动IO工作,因此它们非常繁忙,无论如何都有20个MINA线程,这显然太多了。 对我来说很奇怪的是,两个应用程序总是把他们的CPU时间的30%,有时高达60%用于MINA的select()方法,在VisualVM中进行了分析。 调用堆栈如下所示: java.lang.Thread.State: RUNNABLE at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method) at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:228) at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:81) at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87) – locked (a sun.nio.ch.Util$2) – locked (a java.util.Collections$UnmodifiableSet) – locked (a sun.nio.ch.EPollSelectorImpl) at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98) at org.apache.mina.transport.socket.nio.NioProcessor.select(NioProcessor.java:72) at org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:1093) at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:722) 它似乎是基于繁忙的民意调查,这对我来说听起来真的不对。 当我看到那么高的数字时,我应该担心吗? 是什么导致这个? 这是我需要优化的东西还是更类似于睡眠或闲置程序? 如果它更像是一个睡眠例程,它会以某种方式被安排为比其他CPU工作更低的优先级? 更新: 这个线程似乎是同一个问题。 我遵循了它的建议,现在正在运行Java 1.7.0_45,但我仍然看到在具有10k连接的应用程序中, select占用高达90%的CPU时间。 我们正在使用MINA 2.0.4,这意味着修复了相关的错误 […]

如何将JProfiler连接到在localhost上运行的应用程序?

我有一个在我的localhost上运行的应用程序,我想分析应用程序,看看如何增强应用程序的性能。 我正在按照定义执行设置步骤,但它无法连接到localhost服务器,是否有适当的分步指南可用于如何: 配置JProfiler以使用在localhost上运行的应用程序? 在分析应用程序时如何分析以及查找哪些区域? 使用Eclipse IDE配置JProfiler,现在能够在eclipse中查看运行下拉列表中的配置文件,但它们未被激活,那么如何激活它? 我有与此问题类似的问题,但我无法理解解决方案,对此的任何建议都将非常感激。 我现在尝试了一段时间没有成功配置JProfiler来处理在localhost上运行的应用程序,任何建议都将受到高度赞赏。 我是分析应用程序世界的新手,所以如果你能提供一些有用的指针,我将非常感激 我收到以下错误消息: Could not connect to 127.0.0.1:8849. Please make sure that the remote address is correct, the remote program is started properly, and the network route allows socket connections. 我已经使用新服务器集成设置了配置,不确定还需要做什么以及如何解决这个问题。 添加-agentpath:C:\Users\user~1.DOS\SOFTWA~1\JPROFI~1\bin\WINDOW~1\jprofilerti.dll=port=8849,nowait,id=117,config=C:\Users\user\.jprofiler6\config.xml到运行配置下的vm arguments ,然后当我运行配置时我得到 JProfiler> Protocol version 32 JProfiler> Using JVMTI JProfiler> JVMTI version 1.1 detected. JProfiler> 64-bit […]

如何在Java中记忆配置文件?

我还在学习Java的绳索,如果对此有明显的答案,那就很抱歉。 我有一个占用大量内存的程序,我想找到一种方法来减少它的使用,但在阅读了很多SO问题之后,我认为我需要在开始优化它之前certificate问题出在哪里。 所以这就是我所做的,我在程序开始时添加了一个断点并运行它,然后我启动了visualVM并让它描述了内存(我也在netbeans中做了同样的事情只是为了比较结果而且它们是相同的)。 我的问题是我不知道如何阅读它们,我得到了最高区域只是说char[]我看不到任何代码或任何东西(这是有道理的因为visualvm连接到jvm而无法看到我的来源,但netbeans也没有像我在进行cpu分析时那样向我展示源代码。 基本上我想知道的是哪个变量(并希望更多的细节,比如在哪种方法中)所有的内存都在使用,所以我可以专注于在那里工作。 有一个简单的方法来做到这一点? 我现在正在使用eclipse和java进行开发(并且专门为分析安装了visualVM和netbeans,但我愿意安装其他任何你认为完成这项工作的东西)。 编辑:理想情况下,我正在寻找能够获取所有物体并按尺寸排序的东西(所以我可以看到哪一个占用内存)。 目前它返回诸如string []或int []之类的通用信息,但我想知道它所指的是哪个对象,所以我可以努力使其大小更加优化。

如何使用visualvm查找内存泄漏

我怀疑我们的ActiveMQ连接桥有一个主要的内存泄漏 – 我们看到典型的内存泄漏模式(应用程序加载正常,如果长时间运行或在短时间内一次又一次地重新启动,则会减慢速度) 。 我查找了用于查找Java内存泄漏的现代最佳实践,许多开发人员似乎放弃了传统工具,如jhat / jmap,而不是新的(呃) jvisualvm 。 在启动此工具(并花了几个小时阅读其教程)后,我可以为CPU和内存获取探查器快照。 我现在只是陷入困境 – 如何分析这些快照来识别泄漏? 关于如何使用jvisualvm来生成快照,有很多关于如何使用jvisualvm生成快照的文档,但很少有关于如何真正理解它们的文档。 提前致谢。

是否有一种简单的方法可以在Java中获取特定类的所有对象实例

目前我正在使用Java代理来组装内存统计信息。 在instrumentation API的帮助下,我可以掌握类(并操纵它们)。 使用普通Java,我可以估计每个对象使用的资源。 到现在为止还挺好。 我现在面临的问题是“如何掌握特定类的每个Object实例”。 我可以进行字节代码操作以获取对象实例,但我希望有另一个我不知道的API,帮助我在没有如此沉重的侵入性步骤的情况下实现我的目标。 最后,应将性能影响保持在最低限度。 有任何想法吗?