java工具jconsole/jstat学习

news2024/9/22 13:40:38

参考视频【java】jvm指令与工具jstat/jstack/jmap/jconsole/jps/visualVM_哔哩哔哩_bilibili

一、jps

我们再windows和linux都可以看到哪些java进程。

 有小伙伴又会问了 这个类是java的 那其他的这么多进程18096 /8685 这些是啥啊 其实也是java进程,只不过是其他程序,比如idea。

 

二 、jconsole

由于是图形化界面更加清晰 其实jconsole = jstat+jstack

 点击test类,再点击连接,查看详细情况

/**
 * vmOptions
 * -Xms10m -Xmx10m
 * 最小    最大
 * -XX:HeapDumpOnOutOfMemoryError
 */
public class TestJavaUtils {
    public static void main(String[] args) throws InterruptedException {
        int i=0;
        while (true){
            System.out.println("put success");
            Thread.sleep(1000);
        }
    }
}

 注意 要将vm options 设置为 -Xms10m -Xmx10m 否则基本看不到内存变化

 

 可以看到的最大值是9216=10M*1024*0.9 这个0.9就不多说了 有兴趣的自己百度。

这里还可以看到GC。

这个时候有小伙伴就会问了,我知道他GC了对我的工作有什么帮助呢? 我以前也有这个疑问,但是没人解答,这里我告诉你。

为什么我要你设置堆才10M。一半来说就都是1G 2G 甚至10G的内存。因为设置大了,你基本看不到GC,或者GC的时间很短

这里比如我才1分钟就有0.049s的GC时间了,而且我的代码非常简单,复杂10倍不过分吧,那就是0.5s的GC时间,一分钟有0.5s在GC那么是会影响你的正常程序的。例如这篇文章最后,就是GC时间太长CPU负载高,导致任务慢

hadoop中NameNode节点CPU使用量高 解决方案(亲测) - 爱码网

这时小伙伴又会说了 你再windows有图形界面,那我在服务器怎么看

三、jstat

参考文章 https://danny-jiang.blog.csdn.net/article/details/105804076

jstat 是JDK中提供的一个命令行工具,主要用来打印JVM 性能数据相关的统计数据。主要包含以下几个方面:

  • 垃圾回收(GC)方面数据

  • 编译(Compilation)相关数据

  • 类加载信息(Class Loader)

通过jps -l 找到 java的进程号 pid 然后

jstat -gcutil pid 10000 10  这个是看占的比例

jstat -gc pid 10000 10  这个看的是每个空间占的实际大小

jstat -gcnew  pid  只看年轻代

jstat -gcold  查看老年代 

参数解释:

-gc :打印相关的统计参数

-t:  在每行日志之前加上JVM的启动时间

pid : 目标Java进程的ID

10000: jstat命令执行间隔时间(milliseconds),10000表示每10s打印一行日志

10: jstat命令的执行次数,(和上面的时间间隔一起,表示jstat会每10s执行1次,总共执行10次). 可以不要

 这张图可以看到 E区伊甸园区数据不断增多,等到伊甸园区满了来个小GC,就把数据放到幸存者s0区,同时把S1区的数据放到老年代,这时算搞了一次YGC,多了快满的时候就会来个GC

等到老年代数据满了就会来一次OGC

 参数意义:

time :  JVM启动时间(单位为秒)

S0C :年轻代中S0区的容量 (字节)

S1C :年轻代中S1区的容量 (字节)

S0U :年轻代中S0区目前已使用空间 (字节)

S1U :年轻代中S1区目前已使用空间 (字节)

EC :年轻代中Eden区的容量 (字节)

EU :年轻代中Eden区目前已使用空间 (字节)

OC :老年代的容量 (字节)

OU :老年代目前已使用空间 (字节)

M : MetaspaceSize元空间

CCS : CompressedClassSpaceSize压缩类

YGC :从应用程序启动到采样时年轻代中GC次数

YGCT :从应用程序启动到采样时年轻代中GC所用时间(s)

FGC :从应用程序启动到采样时老年代(全GC)GC次数

FGCT :从应用程序启动到采样时老年代(全GC)GC所用时间(s)

GCT:从应用程序启动到采样时GC用的总时间(s)

这个用法在服务器上也是通用的。。。。通过查看GC次数和时间来检查某些服务是不是内存设置过小。

四、jstack

用法 jstack pid 

五、jmap

内存状态可以down下来

jmap -dump:file=filename pid 把内存状态down到本地

jmap -heap pid 打印内存信息

这里打印的比较人性化,其实和jstat差不多.

----后面有机会 找个案例来实战演练 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/383455.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

23.3.1调研

上一篇调研之后,还是没有思路,继续调研文献。 文章目录WEAKLY SUPERVISED EXPLAINABLE PHRASALREASONING WITH NEURAL FUZZY LOGIC模型结构ASK ME ANYTHING: A SIMPLE STRATEGY FOR PROMPTING LANGUAGE MODELSHumanly Certifying Superhuman Classifiers…

即时通讯和实时通讯的区别

即时通讯(IM)和实时通讯是一套网络通讯系统,其本质都是对信息进行转发。最大的不同点是对信息传递的时间规定。二者的区别可以从以下几个方面:一、场景常见的即时通讯 场景包括文字聊天、语音消息发送、文件传输、音视频播放等。通…

【RocketMQ】消息的刷盘机制

刷盘策略 CommitLog的asyncPutMessage方法中可以看到在写入消息之后&#xff0c;调用了submitFlushRequest方法执行刷盘策略&#xff1a; public class CommitLog {public CompletableFuture<PutMessageResult> asyncPutMessage(final MessageExtBrokerInner msg) {// …

docker(一)简介、环境搭建

文章目录前言一、docker简介1.什么是docker2. 什么是容器3.传统的虚拟化技术和容器之间的差别4.容器是如何运行的二、docker环境部署及测试1.环境部署&#xff1a;2.通过镜像运行容器3.拉取镜像前言 一、docker简介 1.什么是docker Docker是一个开源的应用容器引擎&#xff0…

TDEngine集群监控组件安装配置(Telegra+Grafana方案)

Tdengine的监控指标包括以下几个方面&#xff1a; 系统指标&#xff1a;CPU使用率、内存使用率、磁盘空间、网络流量等。数据库指标&#xff1a;连接数、查询数、写入数、读取数等。SQL指标&#xff1a;执行时间、执行计划、索引使用情况等。集群指标&#xff1a;节点状态、数…

生命周期:Vue,微信小程序

目录 一、vue2生命周期&#xff08;钩子函数&#xff09; 二、vue3生命周期&#xff08;钩子函数&#xff09; 三、vue-router3钩子函数&#xff08;与vue2匹配&#xff09; 1、全局钩子&#xff08;全局守卫&#xff09; 2、路由内钩子&#xff08;路由独享的守卫&#x…

Python3-字典

Python3 字典 字典是另一种可变容器模型&#xff0c;且可存储任意类型对象。 字典的每个键值 key>value 对用冒号 : 分割&#xff0c;每个对之间用逗号(,)分割&#xff0c;整个字典包括在花括号 {} 中 ,格式如下所示&#xff1a; d {key1 : value1, key2 : value2, key3…

HTTP头注入

HTTP头注入HTTP Header概述HTTP报文类型HTTP请求方法HTTP Header内容HTTP Header注入HTTP Header注入实例User-Agent注入XFF注入HTTP Header概述 HTTP报文类型 请求报文&#xff1a;由客户端发送给服务器的消息&#xff0c;其组成包括请求行&#xff0c;请求头和请求体。响应…

区块链安全正当时|《Hyperledger Fabric2.0架构安全报告》解读

2021年&#xff0c;《中华人民共和国国民经济和社会发展第十四个五年规划和2035年远景目标纲要》将区块链纳入数字产业&#xff0c;对其发展作出了重要部署。同年6月中央网信办和工信部联合印发了《关于加快推动区块链技术应用和产业发展的指导意见》&#xff0c;提出加快区块链…

Babel-好文

ES6的很多语法在浏览器甚至node环境中无法执行&#xff0c;babel就是一个广泛使用的转码器&#xff0c;可以将ES6代码转化成ES5代码定义一个文件夹&#xff0c;cmd进入到其中&#xff0c;运行npm install -g babel-cli安装&#xff0c;然后可以通过babel --version查看是否安装…

odoo15 登录界面的标题自定义

odoo15 登录界面的标题自定义 原代码中查询:<title>Odoo<title> <html> <head><meta http-equiv="content-type" content="text/html; charset=utf-8" /><title>Odoo</title><link rel="shortcut icon…

Jvm调优实战笔记

一、基础命令jps 查看所有java进程jinfo 进程号 查看该线程相关信息3、jstat 统计信息&#xff08;数据跟踪信息&#xff09;jstat -gc 进程号 查看该线程在内存中每一块占用的大小jstat -gc 进程号 时间&#xff08;毫秒&#xff09; 更新频率4、jstack 跟踪线程jstack 进程号…

Ethercat系列(10)用QT实现SOEM主站

首先将SOEM编译成静态Lib库可以参考前面的博文(83条消息) VS2017下编译SOEM(Simle Open EtherCAT Master)_soem vs_CoderIsArt的博客-CSDN博客make_libsoem_lib.bat "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build" x86用QT创建…

【C++】多态虚表

多态——多种形态多态的分类&#xff1a;1.静态多态&#xff1a;函数重载和运算符重载&#xff08;复用函数名&#xff09;2.动态多态&#xff1a;派生类和虚函数实现运行时多态静态多态和动态多态的区别&#xff1a;静态多态的函数地址早绑定——编译阶段确定函数地址动态多态…

页面访问升级出错怎么解决

相信大家在访问网站的时候时常会遇到页面访问界面升级&#xff0c;暂时不可能进行访问操作&#xff0c;可能遇到这种情况很多小伙伴们都不知道怎么版&#xff0c;其实互联网网页在正常使用过程中是不会出现这种问题的。那么如果遇到页面访问界面升级怎么办?页面访问界面升级通…

TryHackMe-Binex

Binex 枚举计算机并获取交互式 shell。利用 SUID 位文件&#xff0c;使用 GNU 调试器利用缓冲区溢出并通过 PATH 操作获得根访问权限。 端口扫描 循例 nmap SMB枚举 题目给了提示&#xff1a;Hint 1: RID range 1000-1003 Hint 2: The longest username has the unsecure pa…

面试中问你查看日志的命令,可不能只说tail,cat,more

首选&#xff0c;如何查看日志&#xff1a; 很多初级测试人员&#xff0c;在进行执行测试用例这个步骤时&#xff0c;发现bug&#xff0c;不能更加的准确去定位bug&#xff0c;在这样的情况下就可以打开Linux服务器&#xff0c;敲命令查看操作进行中的实时日志&#xff0c;当系…

用arthas轻松排查线上问题

你是否在项目中会碰到以下一些问题&#xff1a; 在代码中打印各种日志来排查&#xff0c;比如方法的入参&#xff0c;出参&#xff0c;及在方法体中打印日志判断走哪行代码还有你觉得代码没问题&#xff0c;可是运行出现却是以前的bug&#xff0c;感觉代码没修改&#xff0c;或…

120.(leaflet篇)区域下钻,区域钻取

听老人家说:多看美女会长寿 地图之家总目录(订阅之前建议先查看该博客) 文章末尾处提供保证可运行完整代码包,运行如有问题,可“私信”博主。 效果如下所示: 下面献上完整代码,代码重要位置会做相应解释 <!DOCTYPE html> <html>

【RocksDB】Ubuntu20.04下编译rocksdb

前言&#xff1a; 我在刚学rocksdb的时候是在2022年&#xff0c;但是网上的资源很少&#xff0c;查了好久才把rocksdb安装成功&#xff0c;在这里向大家分享一下我的经历&#xff0c;安装过程中也报了很多错误&#xff0c;希望大家不要迷路 首先 在虚拟机里面安装依赖的包以…