您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > JAVA

Java虚拟机工具(应用)

时间:2019-11-15 10:40:50  来源:  作者:

一.JAVA虚拟机工具

JDK 本身提供了很多方便的 JVM 性能调优监控工具,除了 jps、jstat、jinfo、jmap、jhat、jstack 等小巧的工具,还有集成式的 jvisualvm 和 jconsole。

1.jps

jps(JVM Process Status Tool,虚拟机进程监控工具),这个命令可以列出正在运行的虚拟机进程,并显示虚拟机执行主类名称,以及这些进程的本地虚拟机唯一 ID。这个 ID 被称为本地虚拟机唯一 ID(local virtual machine Identifier,简写为LVMID)。如果你在 linux 的一台服务器上使用 jps 得到的 LVMID 其实就是和 ps 命令得到的 PID 是一样的。

语法格式如下:

jps [options] [hostid]

如果不指定hostid就默认为当前主机或服务器。

options参数选项说明如下:

-q 不输出类名、Jar名和传入main方法的参数
-m 输出传入main方法的参数
-l 输出main类或Jar的全限名
-v 输出传入JVM的参数

使用(查看所有java进程)

jps -lv

示例:

[root@chengchi ~]# jps
24804 Jps
1862 mango.jar

[root@chengchi ~]# jps -lv
24787 sun.tools.jps.Jps -DApplication.home=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64 -Xms8m
1862 /home/www/api.chengchijinfu.com/mango_server/target/mango.jar -Dserver.port=8080 -Dspring.profiles.active=prod

2.jstat

jstat(JVM Statistics Monitoring Tool,虚拟机统计信息监视工具),这个命令用于监视虚拟机各种运行状态信息。它可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,虽然没有GUI图形界面,只是提供了纯文本控制台环境的服务器上,但它是运行期间定位虚拟机性能问题的首选工具。

语法格式如下:

jstat [option vmid [interval [s | ms] [count ] ] ]

例如:需要每 1000 毫秒查询一次进程 16418 垃圾收集状况,一共查询 10 次,那命令如下:

Java虚拟机工具(应用)

 

3.jinfo

jinfo (Configuration Info for Java,配置信息工具) 这个命令可以实时地查看和调整虚拟机各项参数。

查看2788的MaxPerm大小可以用

[root@Bill-8 bin]# jinfo -flag MaxPermSize 2788
-XX:MaxPermSize=134217728

4.jmap

jmap(Memory Map for Java,内存映像工具),用于生成堆转存的快照,一般是 heapdump 或者 dump 文件。如果不适用 jmap 命令,可以使用 -XX:+HeapDumpOnOutOfMemoryError 参数,当虚拟机发生内存溢出的时候可以产生快照。或者使用kill -3 pid也可以产生。jmap 的作用并不仅仅是为了获取 dump 文件,它可以查询 finalize 执行队列,java 堆和永久代的详细信息,如空间使用率,当前用的哪种收集器。

jmap的命令格式:

jmap [option] vmid
jmap -J-d64 -heap 16418

5.jhat

jhat(虚拟机堆转储快照分析工具),这个工具是用来分析 jmap dump 出来的文件。 由于这个工具功能比较简陋,运行起来也比较耗时,所以这个工具不推荐使用,推荐使用MAT。

例如分析dump 出来的 test.bin,命令如下:

jhat test.bin 

它会在本地启动一个web服务,端口是7000,这样直接访问 127.0.0.1:7000就能看到分析结果了。

6.jstack

阿里实习面试

jstack(Java Stack Trace,Java堆栈跟踪工具),这个命令用于查看虚拟机当前时刻的线程快照(一般是threaddump 或者 javacore文件)。线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合。**生成线程快照的主要目的是:**定位线程出现长时间停顿的原因,入线程间死锁、死循环、请求外部资源导致的长时间等待都是导致线程长时间停顿的常见原因。线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做些什么事情。

命令格式:

jstack [option] vmid

使用:查看进程2849 的堆栈信息

[root@Bill-8 yrd_soft]# jstack 2849

(7)jconsole

阿里面经

JConsole 中,您将能够监视 JVM 内存的使用情况、线程堆栈跟踪、已装入的类和 VM 信息以及 CE MBean。

jconsole:一个 java GUI 监视工具,可以以图表化的形式显示各种数据。并可通过远程连接监视远程的服务器VM。用 Java 写的 GUI 程序,用来监控 VM,并可监控远程的 VM,非常易用,而且功能非常强。命令行里打 jconsole,选则进程就可以了。

(8)jvisualvm

jvisualvm 同 jconsole 都是一个基于图形化界面的、可以查看本地及远程的 JAVA GUI 监控工具,Jvisualvm 同 jconsole 的使用方式一样,直接在命令行打入 jvisualvm 即可启动,jvisualvm 界面更美观一些,数据更实时:



Tags:Java虚拟机   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
为什么要有JVM? JVM就是Java运行虚拟机,那么虚拟机又分为系统虚拟机和程序虚拟机,而JVM是属于程序虚拟机,所以不要看到是虚拟机就误认为JVM是系统虚拟机。 JVM是帮助Java程序开...【详细内容】
2021-06-09  Tags: Java虚拟机  点击:(155)  评论:(0)  加入收藏
一、类加载器首先来看一下java程序的执行过程。 从这个框图很容易大体上了解java程序工作原理。首先,你写好java代码,保存到硬盘当中。然后你在命令行中输入javac YourClassNa...【详细内容】
2020-03-05  Tags: Java虚拟机  点击:(33)  评论:(0)  加入收藏
注:源代码就是.java文件,JVM字节码就是.class文件1. Java 堆(Java Heap): (1)是Java虚拟机所管理的内存中最大的一块。 (2)在虚拟机启动的时候创建。堆是jvm所有线程共享的。 (3)唯一...【详细内容】
2020-01-04  Tags: Java虚拟机  点击:(43)  评论:(0)  加入收藏
一.Java虚拟机工具JDK 本身提供了很多方便的 JVM 性能调优监控工具,除了 jps、jstat、jinfo、jmap、jhat、jstack 等小巧的工具,还有集成式的 jvisualvm 和 jconsole。1.jpsjp...【详细内容】
2019-11-15  Tags: Java虚拟机  点击:(65)  评论:(0)  加入收藏
McGovernTheory在StackOverflow提了这样一个问题: Java虚拟机最多支持多少个线程?跟虚拟机开发商有关么?跟操作系统呢?还有其他的因素吗?...【详细内容】
2019-10-08  Tags: Java虚拟机  点击:(96)  评论:(0)  加入收藏
第一章 走进javajava的优点:摆脱了硬件平台的束缚,实现了“一次编写,到处运行”;它提供了一个相对安全的内存管理和访问机制,避免了绝大部分的内存泄漏和指针越界问题;它实现了热...【详细内容】
2019-08-29  Tags: Java虚拟机  点击:(160)  评论:(0)  加入收藏
McGovernTheory在StackOverflow提了这样一个问题:Java虚拟机最多支持多少个线程?跟虚拟机开发商有关么?跟操作系统呢?还有其他的因素吗?Eddie的回答:这取决于你使用的CPU,操作系...【详细内容】
2019-08-28  Tags: Java虚拟机  点击:(192)  评论:(0)  加入收藏
文章目录 代码的大体执行过程 代码在JVM里面的详细执行过程 类加载器详解 运行时数据区详解先来看下面这一段代码: 代码的大体执行过程JDK、JRE、JVM的区别和联系;代码的大体...【详细内容】
2019-08-02  Tags: Java虚拟机  点击:(264)  评论:(0)  加入收藏
▌简易百科推荐
面向对象的特征之一封装 面向对象的特征之二继承 方法重写(override/overWrite) 方法的重载(overload)和重写(override)的区别: 面向对象特征之三:多态 Instanceof关键字...【详细内容】
2021-12-28  顶顶架构师    Tags:面向对象   点击:(2)  评论:(0)  加入收藏
一、Redis使用过程中一些小的注意点1、不要把Redis当成数据库来使用二、Arrays.asList常见失误需求:把数组转成list集合去处理。方法:Arrays.asList 或者 Java8的stream流式处...【详细内容】
2021-12-27  CF07    Tags:Java   点击:(3)  评论:(0)  加入收藏
文章目录 如何理解面向对象编程? JDK 和 JRE 有什么区别? 如何理解Java中封装,继承、多态特性? 如何理解Java中的字节码对象? 你是如何理解Java中的泛型的? 说说泛型应用...【详细内容】
2021-12-24  Java架构师之路    Tags:JAVA   点击:(5)  评论:(0)  加入收藏
大家好!我是老码农,一个喜欢技术、爱分享的同学,从今天开始和大家持续分享JVM调优方面的经验。JVM调优是个大话题,涉及的知识点很庞大 Java内存模型 垃圾回收机制 各种工具使用 ...【详细内容】
2021-12-23  小码匠和老码农    Tags:JVM调优   点击:(12)  评论:(0)  加入收藏
前言JDBC访问Postgresql的jsonb类型字段当然可以使用Postgresql jdbc驱动中提供的PGobject,但是这样在需要兼容多种数据库的系统开发中显得不那么通用,需要特殊处理。本文介绍...【详细内容】
2021-12-23  dingle    Tags:JDBC   点击:(13)  评论:(0)  加入收藏
Java与Lua相互调用案例比较少,因此项目使用需要做详细的性能测试,本内容只做粗略测试。目前已完成初版Lua-Java调用框架开发,后期有时间准备把框架进行抽象,并开源出来,感兴趣的...【详细内容】
2021-12-23  JAVA小白    Tags:Java   点击:(11)  评论:(0)  加入收藏
Java从版本5开始,在 java.util.concurrent.locks包内给我们提供了除了synchronized关键字以外的几个新的锁功能的实现,ReentrantLock就是其中的一个。但是这并不意味着我们可...【详细内容】
2021-12-17  小西学JAVA    Tags:JAVA并发   点击:(11)  评论:(0)  加入收藏
一、概述final是Java关键字中最常见之一,表示“最终的,不可更改”之意,在Java中也正是这个意思。有final修饰的内容,就会变得与众不同,它们会变成终极存在,其内容成为固定的存在。...【详细内容】
2021-12-15  唯一浩哥    Tags:Java基础   点击:(17)  评论:(0)  加入收藏
1、问题描述关于java中的日志管理logback,去年写过关于logback介绍的文章,这次项目中又优化了下,记录下,希望能帮到需要的朋友。2、解决方案这次其实是碰到了一个问题,一般的情况...【详细内容】
2021-12-15  软件老王    Tags:logback   点击:(19)  评论:(0)  加入收藏
本篇文章我们以AtomicInteger为例子,主要讲解下CAS(Compare And Swap)功能是如何在AtomicInteger中使用的,以及提供CAS功能的Unsafe对象。我们先从一个例子开始吧。假设现在我们...【详细内容】
2021-12-14  小西学JAVA    Tags:JAVA   点击:(22)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条