javavisulvm的简单介绍
本篇文章给大家谈谈javavisulvm,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java visualvm执行垃圾回收按钮怎样用java代替
- 2、java visualvm 堆dump怎么分析
- 3、如何java visualvm分析hprof文件
- 4、jvisualvm的使用
- 5、java内存诊断软件?
java visualvm执行垃圾回收按钮怎样用java代替
Java垃圾回收监控和分析工具
Java VisualVM
Naarad
GCViewer
IBM Pattern Modeling and Analysis Tool for Java Garbage Collector
HPjmeter
IBM Monitoring and Diagnostic Tools for Java – Garbage Collection and Memory
Visualizer
Verbose GC Analyzer
Java VisualVM
Java VisualVM是在Java SE SDK安装时免费提供的。看下你的Java JDK安装目录下的/bin目录,Javajdk1.8.0bin。此目录下有许多其他工具包括javac和java工具,jvisualvm就是其中一个。
Java VisualVM对运行中的Java应用提供了可视化的信息展示。它是很多工具的整合包,像工具JConsole,jstat,jinfo,jstack以及jmap现在都是Java VisualVM的一部分。
Java VisualVM可以用来 - 生成和分析堆内存的dump - 观察和操作MBeans - 监控垃圾回收 - 内存和CPU性能分析
java visualvm 堆dump怎么分析
jmap是java自带的工具
1. 查看整个JVM内存状态
jmap -heap [pid]
2. 查看JVM堆中对象详细占用情况
jmap -histo [pid]
3. 导出整个JVM 中内存信息,可以利用其它工具打开dump文件分析,例如jdk自带的visualvm工具
jmap -dump:file=文件名.dump [pid]
如何java visualvm分析hprof文件
在你的jdk安装的目录的bin目录下/有一个文件jvisualvm windwos下为jvisualvm.exe,点开它,会弹出一个gui界面 双击其中的visualVM 你就可以看到 你的java虚拟机占用的情况如下图所示: 这里面还可以监控其他的东西 比如线程等
jvisualvm的使用
1.jvisualvm在安装完jdk的时候就已经存在了,放在jdk安装目录bin下面
2.jvisualvm的使用
/usr/local/java/bin/jvisualvm
3.监控本地和监控远程
1)监控本地:
标签介绍:
概述:显示的是该服务器的启动和系统参数,可以通过与服务器的实际参数进行对比查看是否有内存溢出
监控:显示的是当前系统的CPU、内存、类和线程的相关资源的使用情况。其中"堆dump"可以查看堆的详细状态,包括堆的概况,里面所有的类,还能点进具体的一个类查看这个类的状态。
线程:能够显示线程的名称和运行的状态,在调试多线程时必不可少,而且可以点进一个线程查看这个线程的详细运行情况
抽样器:(可针对cpu和内存进行抽样监控)
2).远程tomcat监控
1)修改修改 /{tomcat path}/bin/catalina.sh, 找到第一个没注释的JAVA_OPTS,在前面添加
2)将8099端口开放----添加防火墙
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8099 -j ACCEPT
重启防火墙----/etc/init.d/iptables restart
3)jvisualvm添加远程tomcat监控
3)远程java应用程序(非tomcat):
方法1:(在启动的时候添加启动参数)
nohup java -Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9005
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.net.preferIPv4Stack=true
-Djava.rmi.server.hostname=192.168.9.174 -jar monitor_tuning-0.0.1-SNAPSHOT.jar
注意端口号9005要开放,添加防火墙 !
方法2:使用jstatd
1)在$JAVA_HOME/bin目录下新建一个文件jstatd.all.policy(名称随意),内容如下:
grant codebase "file:/usr/local/java/lib/tools.jar" {
permission java.security.AllPermission;
};
2)然后执行
jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=192.168.9.174 -p 1099
在jvisualvm里面添加远程主机 192.168.9.174,然后右键添加jstatd连接,端口默认。jvisualvm即可扫描出所有正在运行的JVM,点击即可监控。
注意:此处需要添加防火墙(此处好多文章都没有说关于防火墙的问题)
两种方法比较:
1)jmx是jvm自身提供的一个标准的jmx管理功能,client支持度非常好,jvm监控工具基本上都会支持这种连接方式。而且只要配置几个简单的选项就可以使用了,不需要单独启动一个第三方的只用来监控连接的应用程序
2)jstatd是jdk提供的一个单独的工具,一个主机只需要运行一个jstatd就可以监控主机上所有的java application,而因为jmx是集成在jvm中,如果主机上有多个java应用程序需要监控,需要每个java应用程序配置相应的jmx选项,而且远程服务端口不能相同,client监控时也需要与每个java应用程序建立单独的连接
3)java应用程序启动时如果没有配置相应的jmx选项,则在运行周期内都无法远程监控应用程序,这可能会丧失定位问题的机会。而jstatd需要监控时,可以随时运行并进行监控
4) 在jvisualvm中,只有通过jstatd连接才能使用visualGC插件功能
5)jstatd server的端口是随机选择的,在有些情况下可能无法使用。比如我司的办公区域与生产区域之间网络设置了防火墙,只允许某个范围的端口通过,这是公司级的,某个团队无法修改防火墙策略。同时办公区域也不能直接ssh访问生产区域服务器,必须经过一个relay,也不能使用jstatd over ssh的方式。个人觉得jstatd不能在启动时显示指定服务的端口是它的一个槽点
4.插件安装:
参考文章:
java内存诊断软件?
对于每一个java进程来说都有自己的内存池和使用空间,而这也就意味着会出现内存使用错误等问题,而这时候我们就需要对java内存进行诊断分析,今天云南java培训就一起来了就一下,在进行内存诊断上都有哪些软件可以使用。
Java堆:分析诊断数据
堆转储分析
堆转储可以使用如下的工具进行分析:
EclipseMAT(内存分析工具,MemoryAnalyzerTool)是一个社区开发的分析堆转储的工具。它提供了一些很棒的特性,包括:
可疑的泄漏点:它能探测堆转储中可疑的泄露点,报告持续占有大量内存的对象;
直方图:列出每个类的对象数量、浅大小(shallow)以及这些对象所持有的堆。直方图中的对象可以很容易地使用正则表达式进行排序和过滤。这样有助于放大并集中我们怀疑存在泄露的对象。它还能够对比两个堆转储的直方图,展示每个类在实例数量方面的差异。这样能够帮助我们查找Java堆中增长快的对象,并进一步探查确定在堆中持有这些对象的根;
不可达的对象:MAT有一个非常棒的功能,那就是它允许在它的工作集对象中包含或排除不可达/死对象。如果你不想查看不可达的对象,也就是那些会在下一次GC周期中收集掉的对象,只关心可达的对象,那么这个特性是非常便利的;
重复的类:展现由多个类加载器所加载的重复的类;
到GC根的路径:能够展示到GC根(JVM本身保持存活的对象)的引用链,这些GC根负责持有堆中的对象;
OQL:我们可以使用对象查询语言(ObjectQueryLanguage)来探查堆转储中的对象。它丰富了OQL的基础设施,能够编写复杂的查询,帮助我们深入了解转储的内部。
JavaVisualVM:监控、分析和排查Java语言的一站式工具。它可以作为JDK工具的一部分来使用,也可以从GitHub上下载。它所提供的特性之一就是堆转储分析。它能够为正在监控的应用创建堆转储,也可以加载和解析它们。从堆转储中,它可以展现类的直方图、类的实例,也能查找特定实例的GC根;
jhat命令工具(在/bin文件夹中)提供了堆转储分析的功能,它能够在任意的浏览器中展现堆转储中的对象。默认情况下,Web服务器会在7000端口启动。jhat支持范围广泛的预定义查询和对象查询语言,以便于探查堆转储中的对象;
Java任务控制(JavaMissionControl)的JOverflow插件:这是一个实验性的插件,能够让Java任务控制执行简单的堆转储分析并报告哪里可能存在内存浪费;
Yourkit是一个商业的Javaprofiler,它有一个堆转储分析器,具备其他工具所提供的几乎所有特性。除此之外,YourKit还提供了:
可达性的范围(reachabilityscope):它不仅能够列出可达和不可达的对象,还能按照它们的可达性范围显示它们的分布,也就是,强可达、弱/软可达或不可达;
内存探查:YourKit内置了一组全面的查询,而不是使用ad-hoc查询功能,YourKit的查询能够探查内存,查找反模式并为常见的内存问题分析产生原因和提供解决方案。
javavisulvm的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、javavisulvm的信息别忘了在本站进行查找喔。