javavisulvm的简单介绍

博主:adminadmin 2023-03-22 02:24:10 660

本篇文章给大家谈谈javavisulvm,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

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的信息别忘了在本站进行查找喔。