Java 性能分析工具 VisualVM 1.3.3 发布
fmms 13年前
<p><img title="Java 性能分析工具 VisualVM 1.3.3 发布" border="0" alt="Java 性能分析工具 VisualVM 1.3.3 发布" align="left" src="https://simg.open-open.com/show/3262df18de5b2acd512ebe715ff37936.png" width="184" height="60" />VisualVM是一个集成多个JDK命令行工具的可视化工具。可以作为Java应用程序性能分析和运行监控的工具。开发人员可以利用它来监控,分 析,获 胜Thread-Dumps,浏览Heap dumps。系统管理员可以利用它来监测,控制Java应用程序横跨整个网络的情况。Java应用程序使用人员可以利用它来创建包含所有必要信息的Bug 报告。</p> <p><img title="Java 性能分析工具 VisualVM 1.3.3 发布" border="0" alt="Java 性能分析工具 VisualVM 1.3.3 发布" src="https://simg.open-open.com/show/3608274d05b66da25f3c32f93b577d6d.png" width="411" height="291" /></p> <p>新版本主要改进包括:</p> <ul> <li>自动死锁监测工具</li> <li>对没个线程CPU进行采样和内存分析</li> <li>支持 Eclipse IDE 3.6 或更新版本</li> </ul> 项目地址: <a href="/misc/goto?guid=4958194221210060528" target="_blank">http://java.net/projects/visualvm/content/</a> <h1>Features</h1> <p>VisualVM is a tool to monitor and troubleshoot Java applications. It runs on Oracle/Sun JDK 6, but is able to monitor applications running on JDK 1.4 and higher. It utilizes various available technologies like jvmstat, JMX, the Serviceability Agent (SA), and the Attach API to get the data and automatically uses the fastest and most lightweight technology to impose minimal overhead on monitored applications. </p> <p style="margin-bottom:15px;">With the out-of-the-box features it perfectly fits all the requirements of application developers, system administrators, quality engineers and - last but not least - application users submitting bug reports containing all the necessary information. </p> <a name="demo"></a> <h3>Demo</h3> <div style="padding-bottom:0px;padding-left:0px;padding-right:5px;margin-bottom:10px;background:#f0f1f2;padding-top:5px;"> <p><a title="VisualVM Screencast." href="/misc/goto?guid=4958194221958137963" target="blank"><img src="http://visualvm.java.net/images/screencast_small.png" /></a><b>See a screencast to discover the most important VisualVM features!</b> </p> <hr style="border-bottom:0px;border-left:0px;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;height:0px;visibility:hidden;color:#f0f1f2;border-top:0px;border-right:0px;padding-top:0px;" /> </div> <a name="features"></a> <h3>Features</h3> <div> <p style="margin-top:5px;"><a title="Display local and remote Java applications." href="/misc/goto?guid=4958194222692978910" rel="lightbox[screenshots]"><img src="http://visualvm.java.net/images/localremoteapps_thumb.jpg" /></a><b>Display local and remote Java applications.</b> VisualVM automatically detects and lists locally and remotely running Java applications (<code>jstatd</code> must be running on the remote host). You can also define applications manually by JMX connection. This way you can easily see what Java applications are running on your system or check if a remote J2EE server process is alive. </p> <hr /> <p><a title="Display application configuration and runtime environment." href="/misc/goto?guid=4958194223445829990" rel="lightbox[screenshots]"><img src="http://visualvm.java.net/images/overview_thumb.jpg" /></a><b>Display application configuration and runtime environment.</b> For each application VisualVM shows basic runtime information: PID, main class, arguments passed to <code>java</code> process, JVM version, JDK home, JVM flags and arguments and system properties. </p> <hr /> <p><a title="Monitor application performance and memory consumption." href="/misc/goto?guid=4958194224193174705" rel="lightbox[screenshots]"><img src="http://visualvm.java.net/images/monitor_thumb.jpg" /></a><b>Monitor application performance and memory consumption.</b> VisualVM monitors application CPU usage, GC activity, heap and permanent generation memory, number of loaded classes and running threads. You can easily detect suspicious memory consumption and take an action - invoke garbage collection in the application or take a heap dump and browse the contents of application heap. </p> <hr /> <p><a title="Monitor application threads." href="/misc/goto?guid=4958194224937042650" rel="lightbox[screenshots]"><img src="http://visualvm.java.net/images/threads_thumb.jpg" /></a><b>Monitor application threads.</b> All threads running in a Java process are displayed in a timeline and table. You can track thread activity and uncover inefficient patterns like blocked Event Dispatch Thread or unused worker threads. </p> <hr /> <p><a title="Profile application performance or analyze memory allocation." href="/misc/goto?guid=4958194225671859885" rel="lightbox[screenshots]"><img src="http://visualvm.java.net/images/profiler_thumb.jpg" /></a><b>Profile application performance or analyze memory allocation.</b> VisualVM includes a built-in application profiler which can visualize where most of the time is being spent or which objects consume most of the memory by just one mouse click without any additional configuration. </p> <hr /> <p><a title="Take and display thread dumps." href="/misc/goto?guid=4958194226409158013" rel="lightbox[screenshots]"><img src="http://visualvm.java.net/images/threaddump_thumb.jpg" /></a><b>Take and display thread dumps.</b> Taking and displaying a thread dump is as easy as clicking a mouse button. You don't need to deal with the command line at all to determine what's currently happening in the application. Moreover, simultaneous thread dumps of multiple applications can be taken at once to start uncovering distributed deadlocks. </p> <hr /> <p><a title="Take and browse heap dumps." href="/misc/goto?guid=4958194227153156786" rel="lightbox[screenshots]"><img src="http://visualvm.java.net/images/heapdump_thumb.jpg" /></a><b>Take and browse heap dumps.</b> When you need to browse contents of application memory or uncover a memory leak in your application, you'll find the built-in HeapWalker tool really handy. It can read files written in <code>hprof</code> format and is also able to browse heap dumps created by the JVM on an OutOfMemoryException. </p> <hr /> <p><a title="Analyze core dumps." href="/misc/goto?guid=4958194227889645005" rel="lightbox[screenshots]"><img src="http://visualvm.java.net/images/coredump_thumb.jpg" /></a><b>Analyze core dumps.</b> When a Java process crashes, a core dump can be generated by the JVM containing important information about application state at the time of the crash. VisualVM is able to display application configuration and runtime environment and to extract thread and heap dumps from the core dump. </p> <hr /> <p style="margin-bottom:10px;"><a title="Analyze applications offline." href="/misc/goto?guid=4958194228623360509" rel="lightbox[screenshots]"><img src="http://visualvm.java.net/images/appsnapshot_thumb.jpg" /></a><b>Analyze applications offline.</b> VisualVM is able to save application configuration and runtime environment together with all taken thread dumps, heap dumps and profiler snaphots into a single application snapshot which can be later processed offline. This is especially useful for bug reports where users can provide a single file containing all the necessary information to identify runtime environment and application state. </p> </div> <a name="extensibility"></a> <h3>Extensibility</h3> <div> <p style="margin-top:5px;"><a title="VisualVM can be easily extended by plugins." href="/misc/goto?guid=4958194229364602838" rel="lightbox[screenshots]"><img src="http://visualvm.java.net/images/plugins_thumb.jpg" /></a> Since VisualVM is built on the <a href="/misc/goto?guid=4958194230100253571">NetBeans Platform</a>, its architecture is modular and easy to extend with plugins. There are various plugins available on the VisualVM Plugin Center including 3rd party plugins, other plugins can be obtained as separate downloads from their respective authors. You can check the list of currently available plugins at the <a href="/misc/goto?guid=4958194230839323469">Plugins</a> page. </p> <p style="margin-bottom:10px;">If you need a special feature or support for a proprietary tool, you can implement your own plugin. It's easy and there is plenty of information and sample code available for both the NetBeans Platform and VisualVM APIs. A good place to start is the <a href="/misc/goto?guid=4958194231580957877">Developer Documentation</a> page. </p> </div> <a name="ideintegration"></a> <h3>IDE Integration</h3> <div> <p style="margin-top:5px;margin-bottom:10px;">VisualVM can be integrated with your IDE to monitor and analyze the code iteratively during development. Integration is available for these IDEs: </p> <ul> <li style="margin-bottom:5px;"><b>Eclipse IDE: </b>VisualVM starts along with the monitored application and automatically opens it after startup to make the monitoring or profiling more convenient. See the <a href="/misc/goto?guid=4958194232318645739">Eclipse launcher for VisualVM page</a> for more information and to get the plugin.</li> <li><b>NetBeans IDE: </b>Use the NetBeans profiler! NetBeans already provides basic monitoring capabilities and offers a fully-featured profiler tightly integrated into the IDE workflow. The extra features over the VisualVM include JDK 5 support, remote profiling, Java EE profiling, automated heap analysis, projects/sources integration and much more. See the <a href="/misc/goto?guid=4958194233066949015">profiler module home</a> for more information.</li> </ul> </div> <a name="feature_matrix"></a> <h3>Feature Matrix</h3> <div> <center style="margin-top:15px;margin-bottom:15px;"> <table border="1" cellspacing="0" width="95%"> <tbody> <tr> <td style="vertical-align:middle;"><b>Feature</b></td> <td style="text-align:center;" width="15%"><b>JDK 1.4.2<br /> <small><span style="font-size:x-small;">local/remote</span></small></b></td> <td style="text-align:center;" width="15%"><b>JDK 5<br /> <small><span style="font-size:x-small;">local/remote</span></small></b></td> <td style="text-align:center;" width="15%"><b>JDK 6<br /> <small><span style="font-size:x-small;">local</span></small></b></td> <td style="text-align:center;" width="15%"><b>JDK 6<br /> <small><span style="font-size:x-small;">remote</span></small></b></td> </tr> <tr> <td>Overview</td> <td style="text-align:center;"><img src="http://visualvm.java.net/images/check.png" /></td> <td style="text-align:center;"><img src="http://visualvm.java.net/images/check.png" /></td> <td style="text-align:center;"><img src="http://visualvm.java.net/images/check.png" /></td> <td style="text-align:center;"><img src="http://visualvm.java.net/images/check.png" /></td> </tr> <tr> <td>System Properties (in Overview)</td> <td style="text-align:center;"> </td> <td> </td> <td style="text-align:center;"><img src="http://visualvm.java.net/images/check.png" /></td> <td> </td> </tr> <tr> <td>Monitor</td> <td style="text-align:center;"><img src="http://visualvm.java.net/images/check.png" /></td> <td style="text-align:center;"><img src="http://visualvm.java.net/images/check.png" /></td> <td style="text-align:center;"><img src="http://visualvm.java.net/images/check.png" /></td> <td style="text-align:center;"><img src="http://visualvm.java.net/images/check.png" /></td> </tr> <tr> <td>Threads</td> <td> </td> <td style="text-align:center;"><img src="http://visualvm.java.net/images/check.png" /></td> <td style="text-align:center;"><img src="http://visualvm.java.net/images/check.png" /></td> <td style="text-align:center;"><img src="http://visualvm.java.net/images/check.png" /></td> </tr> <tr> <td>Profiler</td> <td> </td> <td> </td> <td style="text-align:center;"><img src="http://visualvm.java.net/images/check.png" /></td> <td> </td> </tr> <tr> <td>Thread Dump</td> <td> </td> <td> </td> <td style="text-align:center;"><img src="http://visualvm.java.net/images/check.png" /></td> <td> </td> </tr> <tr> <td>Heap Dump</td> <td> </td> <td> </td> <td style="text-align:center;"><img src="http://visualvm.java.net/images/check.png" /></td> <td> </td> </tr> <tr> <td>Enable Heap Dump on OOME</td> <td> </td> <td> </td> <td style="text-align:center;"><img src="http://visualvm.java.net/images/check.png" /></td> <td> </td> </tr> <tr> <td>MBean Browser (plugin)</td> <td> </td> <td style="text-align:center;"><img src="http://visualvm.java.net/images/check.png" /></td> <td style="text-align:center;"><img src="http://visualvm.java.net/images/check.png" /></td> <td style="text-align:center;"><img src="http://visualvm.java.net/images/check.png" /></td> </tr> <tr> <td>Wrapper for JConsole plugins (plugin)</td> <td> </td> <td style="text-align:center;"><img src="http://visualvm.java.net/images/check.png" /></td> <td style="text-align:center;"><img src="http://visualvm.java.net/images/check.png" /></td> <td style="text-align:center;"><img src="http://visualvm.java.net/images/check.png" /></td> </tr> </tbody> </table> </center> </div> <br />