一、 jps(Java Virtual Machine Process Status Tool)

  • jps主要用来输出JVM中运行的进程状态信息。语法格式如下:

  • 命令行参数选项说明如下:

  1.1  案例

public class StackOnTest {
public static void alloc() {
byte[] b = new byte[2];
b[0] = 1;
} public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
sc.nextLine();
} }
  • 上述代码执行三次,就有三个进程,注意此时不能在console里输入信息,这样程序就会卡在 Scanner sc=new Scanner(System.in); 这里,执行三次就有三个进程

二、jstack

  • jstack主要用来查看某个Java进程内的线程堆栈信息。语法格式如下:

  • 命令行参数选项说明如下:

三、jstat:类装载、内存、垃圾手机、JIT编译的信息

  • 语法格式如下:

  • vmid是Java虚拟机ID,在Linux/Unix系统上一般就是进程ID。interval是采样时间间隔。count是采样数目。

结果

  解释结果图各列含义

四、jinfo:实时查看和调整虚拟机的各项参数

  • jinfo使用介绍
可以用来查看正在运行的Java应用程序的扩展参数,甚至支持在运行时,修改部分参数
-flag <name> pid:打印指定JVM的参数值 
-flag [+|-]<name> pid:设置指定JVM参数的布尔值
-flag <name>=<value> pid:设置指定JVM参数的值

  4.1  案例

public class JInfoTest {
private static void s2() {
String name = ManagementFactory.getRuntimeMXBean().getName();
// get pid
String pid = name.split("@")[0];
System.out.println("Pid is:" + pid); while (true) {
byte[] b = null;
for (int i = 0; i < 10; i++)
b = new byte[1 * 1024 * 1024]; try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
} public static void main(String[] args) {
s2();
}
}
  • 设置jvm启动参数,如下:

  • 运行程序,此时结果如下:

  • 使用jinfo,修改jvm参数

有一点必须注意:PrintGC必须开启,只开启PrintGCDetails、PrintGCTimeStamps不会输出GC,必须PrintGC同时开启

  • 查看控制台,结果如下:

五、jmap

  • jmap是输出内存中对象的工具,甚至可以将VM 中的heap以二进制输出成文本。可以监控JAVA程序是否有内存泄漏。
  • 两种使用方法:

一、jmap -histo PID在内存使用峰值前后分别dump一次,可以对比出GC回收了哪些对象。

二、jmap -dump:format=b,file=f1 PID 将该内存heap输出到f1文件里,配合eclipse插件MemoryAnalyzer来使用

(十)java虚拟机性能监控工具的更多相关文章

  1. Java虚拟机性能监控与调优实战

    From:  https://c.m.163.com/news/a/D7B0C6Q40511PFUO.html?spss=newsapp&fromhistory=1 Java虚拟机性能监控与调 ...

  2. JProfiler - Java的性能监控工具

    简介 JProfiler是一款Java的性能监控工具.可以查看当前应用的对象.对象引用.内存.CPU使用情况.线程.线程运行情况(阻塞.等待等),同时可以查找应用内存使用得热点,即:哪个对象占用的内存 ...

  3. Linux下的java虚拟机性能监控与故障处理命令

    java包中提供了很多监控JVM的工具类,作为java程序员必须得掌握常用的几个工具,下面是几个常用的JVM性能监控与故障处理工具的介绍与使用. 1.jstack 该命令用于生成当前时刻虚拟机的线程快 ...

  4. java虚拟机性能监控调优及原则

    摘抄 http://uule.iteye.com/blog/2114697 一.JVM内存模型及垃圾收集算法  1.根据Java虚拟机规范,JVM将内存划分为: New(年轻代) Tenured(年老 ...

  5. Java虚拟机性能调优相关

    一.JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为:New(年轻代)Tenured(年老代)永久代(Perm) 其中New和Tenured属于堆内存,堆内存会从JVM启动 ...

  6. java - 虚拟机性能监控与故障处理工具

    背景 在项目开发中往往不是一个人完成整个项目,而是由一个团队进行开发,而团队中成员的编程能力参差不齐难免会影响项目性能.当一个项目基本定型后难免会遇到项目产品使用的效果不理想例如长时间失去响应.系统卡 ...

  7. Java虚拟机性能调优(一)

    Java虚拟机监控与调优,借助Java自带分析工具. jps:JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程 jstat:JVM Statistics M ...

  8. Java程序性能监控工具

    系统性能监控: 确定系统运行的整体状态,基本定位问题所在 uptime命令 [root@localhost ~]# uptime23:19:38 up 244 days, 3:39, 34 users ...

  9. Java虚拟机性能监测工具Visual VM与OQL对象查询语言

    1.Visual VM多合一工具 Visual VM是一个功能强大的多合一故障诊断和性能监控的可视化工具,它集成了多种性能统计工具的功能,使用 Visual VM 可以代替jstat.jmap.jha ...

随机推荐

  1. .NET Core 初体验

    .NET Core 作为微软的开源项目,neter 们对之的期待还是挺大的. 以前也看过,接触过,摸索建了几个示例项目,今天就罗列下自己的初体验. .NET Core 安装.帮助等 安装的话,直接官网 ...

  2. 《AlwaysRun!》第五次作业:项目需求分析改进与系统设计

     项目 内容 这个作业属于哪个课程 2016级软件工程(西北师范大学) 这个作业的要求在哪里 实验九 团队作业5—团队项目需求改进与系统设计 团队名称 Always Run! 作业学习目标 (1)掌握 ...

  3. Android adb的一些用法

    adb查看包名/Activity名 adb shell "logcat | grep START" adb shell dumpsys activity | find “mFocu ...

  4. 使用 ajax 多次请求,并将结果集合并(ajax 非异步)

    直接上代码吧... 里面有注释 <!DOCTYPE html> <html> <head> <meta charset="utf-8" / ...

  5. js中使用Switch

    语法 switch(n) { case 1: 执行代码块 1 break; case 2: 执行代码块 2 break; default: n 与 case 1 和 case 2 不同时执行的代码 } ...

  6. markdown 显示图片的三种方式

    插入网络图片 插入本地图片 base64 图片(data:image/png;base64,iVBORw0KG........) ps:base64编码的图片可以通过站长工具编码 https://to ...

  7. Devtool-Console

    1. console面板展示 1.全屏展示 打开开发者工具(option+cmd+i),点击console的tab 2. 在其他面板展示的同时展示console面板 1)esc快捷命令 2)或者选择打 ...

  8. luogu 2152

    SuperGcd 二进制算法 1. A = B, Gcd(A, B) = A; 2. A,B为偶数,  Gcd(A, B) = 2 * Gcd(A / 2, B / 2); 3. A 为偶数, B 为 ...

  9. [Luogu] 奶酪

    https://www.luogu.org/problemnew/show/3958 #include <iostream> #include <cstdio> #includ ...

  10. qml 绘制高精地图之怀疑人生的加载速度

    绘制高精地图时需要gps的经纬度坐标,之前的实现方式是QGeocoordinate类的经纬度变量通过json的方式在qml中使用. 以画线为例,使用方式是这样哒. for(var i in vehic ...