java visual VM使用简介
转载请注明出处
http://blog.csdn.net/pony_maggie/article/details/44999175
作者:小马
VisualVM 是一款免费的性能分析工具。它通过 jvmstat、JMX、SA(Serviceability Agent)以及
Attach API
等多种方式从程序运行时获得实时数据,从而进行动态的性能分析。它最主要的功能是监控内存泄露,跟踪垃圾回收,执行时内存、cpu分析,线程分析等。
通过实际的例子来说明。第一步我们要安装viual VM, 比较好的是在jdk6之后的安装目录下自带了这个工具,不用再独立安装。
打开之后如下图:
当我们通过eclipse运行程序时,visual VM会自动识别到正在运行的程序,比如下面一段代码头:
- public class StringPoolTest
- {
- public void testStringPoolWithLongString()
- {
- long i = 0;
- while(true)
- {
- String longString = "this is a very very long string,to test the gc behavior of the string constant pool" + i;
- longString.intern();
- i++;
- }
- }
- /**
- * @param args
- */
- public static void main(String[] args)
- {
- StringPoolTest test = new StringPoolTest();
- test.testStringPoolWithLongString();
- }
- }
在eclipse下运行这段程序,然后到visual VM中打开监视视图,看到如下的显示情况:
CPU部分不显示,应该是因为我运行的jdk版本太低。内存部分我们看到堆和perm的使用情况,注意看上面的程序,testStringPoolWithLongString函数是个死循环,不断的调用String的intern,intern返回字符串对象的规范化表示形式,当调用
intern 方法时,如果池已经包含一个等于此 String 对象的字符串,则返回池中的字符串。否则,将此 String
对象添加到池中,并且返回此 String 对象的引用。java7以前,字符串常量池是放在perm空间的,
从java7开始,放在heap空间。我用的版本是1.6,所以如果我们切换到perm视图看到的会是另一种景象,
从图上可以看出,不断的GC,又不断的申请空间。
线程部分显示的是当前用户线程和守护线程的数量,
java visual VM使用简介的更多相关文章
- [Java] 使用Java Visual VM寻找PermGen Space的解决办法
在Eclipse使用tomcat运行3个项目时,老是报这个错误,以下为错误详情: 2014-5-28 13:47:41 org.apache.catalina.core.StandardWrapper ...
- Java虚拟机性能监测工具Visual VM与OQL对象查询语言
1.Visual VM多合一工具 Visual VM是一个功能强大的多合一故障诊断和性能监控的可视化工具,它集成了多种性能统计工具的功能,使用 Visual VM 可以代替jstat.jmap.jha ...
- java assert的用法简介【转】
assert的基本用法 assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制,如C,C++和Eiffel等,但是支持的形式不尽相同,有的是通过语言本身.有的是通过库 ...
- Java JVM监控工具JConsole简介
Java JVM监控工具JConsole简介 jconsole命令 功能:打开java监视管理控制台 方法: jconsole [选项1] [选项2] …… [选项n] 常用选项: -help ...
- 使用Visual VM 查看linux中tomcat运行时JVM内存
前言:在生产环境中经常发生服务器内存溢出,假死或者线程死锁等异常,导致服务不可用.我们经常使用的解决方法是通过分析错误日记,然后去寻找代码到底哪里出现了问题,这样的方式也许会奏效,但是排查起来耗费时间 ...
- Java 8 VM GC Tunning Guide Charter 5
第5章 Available GC The Java HotSpot VM includes three different types of collectors, each with differe ...
- Java 8 VM GC Tunning Guide Charter 7-8-b
第七章 并发gc Java 8提供两种并发gc,CMS和G1 Concurrent Mark Sweep (CMS) Collector This collector is for applicati ...
- Java 8 VM GC Tunning Guild Charter 9-b
第九章 G1 GC The Garbage-First (G1) garbage collector is a server-style garbage collector, targeted for ...
- Jconsole: JAVA 监视和管理控制台简介
Jconsole: JAVA 监视和管理控制台简介 JDK中除了提供大量的命令行之外,还提供两个功能强大的可视化工具:JConsole和VisualVM. 之前对java的调试一直停留在 右键-> ...
随机推荐
- 使用android-junit-report.jar导出单元测试报告
Android在使用脚本编译和测试时,使用默认的testrunner不会输出文件类型的单元测试报告,每次只能分析logcat的无法直观的看到单元测试结果和报告,这给编写自动化脚本带来了不少麻烦,虽然可 ...
- vue知识
https://juejin.im/post/5af16a2cf265da0b8636353b
- grep_awk_sed文本处理
小技巧 1.删除0字节文件find -type f -size 0 -exec rm -rf {} \; 2.查看进程按内存从大到小排列ps -e -o “%C : %p : %z : %a”|sor ...
- POJ3648 Wedding 【2-sat】
题目 Up to thirty couples will attend a wedding feast, at which they will be seated on either side of ...
- pdf生成
要用本文的方法生成PDF文件,需要两个控件:itextsharp.dll和ICSharpCode.SharpZipLib.dll,由于示例代码实在太多,我将代码全部整理出来,放在另外一个文件“示例代码 ...
- 几个实用的 jQuery 插件
1. owl.carousel -- 强大实用的jQuery幻灯片插件 2. jquery.nicescroll.min.js -- 自定义滚动条样式,支持 div,iframe,html 等. 3. ...
- SQLServer (2005/2008) 日志清理方法
--数据库日志名称查询 USE DBNAME GO SELECT file_id, name,* FROM sys.database_files; GO------------------------ ...
- linux之eval
1. eval command-line 其中command-line是在终端上键入的一条普通命令行.然而当在它前面放上eval时,其结果是shell在执行命令行之前扫描它两次.如: pipe=&qu ...
- UVA1218 Perfect Service
Time Limit: 3000MS 64bit IO Format: %lld & %llu /*by SilverN*/ #include<iostream> #inc ...
- [LeetCode] Factorial Trailing Zeroes 阶乘末尾0
Given an integer n, return the number of trailing zeroes in n!. Note: Your solution should be in log ...