IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> JVM系列之常用命令(上) -> 正文阅读

[开发工具]JVM系列之常用命令(上)

前言

不少初级java程序员,使用过的java命令就那么几个。

  1. 使用java -version查看java版本
  2. 使用java -jar启动springboot程序
  3. 使用jps查询进程
    在真实的环境,往往会遇到一些JVM内存和CPU问题,对于这种问题,很多处理方式就是重启服务器,但是过一段时间有出现JVM占用过多的资源,导致程序响应超时,甚至OOM直接进程无法恢复正常使用。

查看java版本

java -version

在这里插入图片描述

编译java文件

先写一个简单的java文件Demo.java

import java.time.LocalDateTime;

public class Demo {
    public static void main(String[] args) {
        new Thread(() -> {
            while (true) {
                System.out.println(LocalDateTime.now());
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }
}

然后使用javac命令执行

javac Demo.java

编译完成后就会多出来一个Demo.class的二进制文件
在这里插入图片描述

运行class文件

  1. 运行class文件时,注意不要加.class后缀。
  2. 由于这里运行一个独立class文件,没有依赖其他的jar包,否则需要加入-cp或者-classpath来引入依赖的jar包。
  3. 运行命令里,我加入里一些jvm的参数-Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError,为了文章后面的内容做准备。
java -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError Demo

在这里插入图片描述
这里把我当前的时间打印出来了。

查询java进程

  1. jps命令可以查询所有java进程,返回了pid(进程id)、进程名称和启动参数
  2. -l 可以显示进程全名
  3. -v 可以查看进程的启动参数
jps -lv

在这里插入图片描述
这里可以看到里面有两个java进程,一个是jps命令对应的进程,另一个是刚才运行的java进程。显示的列表有进程号、进程名称和启动参数。
如果使用idea运行的情况下,可以看到更多的java进程,包括idea的java进程。idea运行时和启动我们的java项目时,会加入很多的jvm参数。
在这里插入图片描述

jstat

命令和结果

jstat -gc 3634 1s 10

在这里插入图片描述

  1. -gc 是查看jvm的各个区间的内存消耗值和gc触发次数
  2. 3634是刚才使用jps查看到的demo程序的进程号
  3. 1s 10表示间隔1秒,一共打印10次
  4. 这里的内存的单位是KB

JVM内存模型

在这里插入图片描述

堆内存 = 年轻代(Young) + 年老代(Old) + 元空间(Metaspace)
年轻代 = Eden区 +Survivor1 +Survivor2

命令返回的列表中,各个列的含义

S0C、S1C、S0U、S1U:Survivor 0/1区分配的最大容量(Capacity)和使用量(Used)
EC、EU:Eden区分配的最大容量和使用量
OC、OU:年老代(Old)分配的最大容量和使用量
MC、MU:元空间(Metaspace)分配的最大容量和使用量
YGC、YGT:年轻代GC次数和GC耗时
FGC、FGCT:Full GC次数和Full GC耗时
GCT:GC总耗时

-gcutil可以查看使用率

jstat -gcutil 3634 1s 10

在这里插入图片描述
S0、S1:Survivor 0/1区使用率/百分比
E:Eden区使用率/百分比
O:年老代使用率/百分比
PC、PU:永久代分配的最大容量和使用量
YGC、YGT:年轻代GC次数和GC耗时
FGC、FGCT:Full GC次数和Full GC耗时
GCT:GC总耗时

显示jstat所有可以使用的选项

列出所有可以使用的jstat选项

jstat -options

在这里插入图片描述
想知道它们的具体含义使用man命令就可以查看,这里就需要一定的英文能力了

man jstat

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
其它的都差不多,就不全部贴出来了。

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-05-09 12:56:36  更:2022-05-09 12:58:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 1:44:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码