深圳网站关键词排名查询,白云区最新新闻,网络营销渠道的概念,上传网站软件前置#xff1a;
RMI协议#xff1a;java的一个远程调用协议#xff0c;在不同的JVM之间可以进行接口的调用#xff0c;但数据不安全#xff0c;且仅限java#xff1b;
一、常见命令及用法
1、jps#xff1a;与Linux的ps命令有点类似#xff0c;查看系统中在运行的J…前置
RMI协议java的一个远程调用协议在不同的JVM之间可以进行接口的调用但数据不安全且仅限java
一、常见命令及用法
1、jps与Linux的ps命令有点类似查看系统中在运行的Java程序并打印main方法所在类名和PID进程号主要选项参数
-m输出启动时传递给main函数的参数
-v输出启动时JVM的参数
2、jstat监视运行中的JVM状态信息包含类加载的信息内存、垃圾回收、即时编译信息当使用动态代理时会在运行过程中实时的产生Class对象
可以查看本地的也可以通过RMI协议查看远程的
在运行中的JVM没有可视化图形工具的时候常用
命令格式
本地jstat option interval count
如jstat -gc 1027 1000 10 表示打印1027那个进程的垃圾回收信息每1000毫秒打印一次总共打印10次省略interval和count表示只打印一次只省略count表示在间隔时间内一直打印interval的单位是毫秒
远程jstat option 协议RMI://lvmid 远程机器的hostname端口/servername
如jstat -gc RMI://1027192.168.1.1:8080/HelloJVM
主要选项参数主要包含三大类类加载、垃圾回收和即时编译情况
-gc表示打印gc信息
-class表示打印类加载和卸载空间和耗时等信息
-gccause导致上一次GC的原因
-compiler即时编译过的方法、耗时等
3、jmap生成堆转储文件heapdump或dump文件
备注生成堆转储快照也可以通过设置参数的方式进行比如设置
XXHeapDumpOnOutOfMemaryError在出现内存溢出异常的时候在当前工程目录下生成堆转储快照这种是比较暴力的做法一般在生产环境上不用因为生成快照是比较耗时的会影响系统整个运行一般在测试环境或者压力测试的时候用
也可以通过XXHeapDumPathpath来指定生成堆文件的路径
jmap生成堆转储快照
jmap -dump pid
jmap -heap pid生成堆详细信息比如垃圾回收器参数配置等但只在Linux下有限Windows下无效
jmap -F当已经发生内存溢出同时使用jmap -dump无响应时使用-F强制生成堆文件
jmap -histo统计对象信息包括类、实例数量等可以查看哪个对象分配最多导致内存溢出
4、jstack生成当前时刻JVM的线程快照线程快照是指每一条线程正在执行的那个方法的堆栈信息当某个线程出现长时间卡顿时需要使用该命令进行定位比如出现请求外部资源未响应导致一直等待死循环深度递归调用死锁等
格式jstack option pid
jstack -F强制生成线程快照信息
jstack -l显示锁的附加信息
5、jhat与jmap配合使用在JVM内部内置了一个微型的web服务器用来分析jmap转储的堆文件快照除非在完全依赖线上的环境上否则一般不使用jhat来分析堆文件因为功能相对简陋且加载堆文件比dump堆文件更耗内存可以下载到本地使用VisualVM可视化工具进行分析
6、jinfo查看JVM的一些显示指定和非显示指定的参数也可以对这些参数进行修改
jinfo -flag查询默认的那些参数值
二、JDK自带可视化工具
1、JConsole
2、VisualVM
对JVM实际性能影响较小相比于其他可视化工具它可以使用在生产环境中排查问题
支持插件安装可以扩展功能
3、Mission Control
三、其他第三方可视化工具
1、阿里的Arthas