ps -ef|grep java
1、基本情况
2、测试
根据基本语法进行测试即可
3、基本语法
可以通过jps -help
来查看对应的参数信息
①options参数
综合使用:
jps -l -m等价于jps -lm
如何将信息输出到同级文件中:
语法:命令 > 文件名称
例如:jps -l > a.txt
②hostid参数
1、基本情况
通过命令行的方式,纯文本的方式去监视整个内存JVM的占用
2、基本语法
其中vmid是进程id号,也就是jps之后看到的前面的号码,如下:
①option参数
- 打印编译所花费的时间次数等信息:↓
- 打印被jit编译器编译过的方法:↓
1、-class举例:
简单使用:↓
jstat -class -t -h3 13344 1000 10
h3 中的3代表每隔3个分隔一次,
13344 代表类的进程id,
1000 代表每隔1000毫秒打印一次,
10 代表一共打印10次,
如下所示:
Timestamp代表:程序至今的运行时间,单位为秒;
Loaded代表:加载的类的数目;
Bytes代表:加载的类的总字节数;
Unloaded代表:卸载的类的数目;
Bytes代表:卸载的类的总字节数;
Time代表:类装载所消耗的时间;
2、-gc举例:
jstat -gc 13344
13344代表类的进程id,执行结果如下所示:
S0C:代表幸存者0区的总容量,
S1C:代表幸存者1区的总容量,
S0U:代表幸存者0区使用的容量,
S1U:代表幸存者1区使用的容量,
EC:代表伊甸园区的总容量,
EU:代表伊甸园区使用的总容量,
OC:代表老年代的总容量,
OU:代表老年代已经使用的容量,
MC:代表方法区的总容量,
MU:代表方法区的总容量,
CCSC:代表压缩类的总容量,
CCSU:代表压缩类使用的容量,
YGC:代表年轻代垃圾回收的次数,
YGCT:年轻代进行垃圾回收需要的时间,
FGC:代表代表Full GC的次数,
FGCT:代表Full GC的时间,
GCT:代表垃圾回收的总时间
3、-gccapacity举例:
jstat -gccapacity 13344
13344代表类的进程id,执行结果如下:
其中S0C代表幸存者0区的容量,S1C代表幸存者1区的容量,EC代表伊甸园区的容量,CCSC代表压缩类的容量,YGC代表年轻代垃圾回收的时间,FGC代表Full GC垃圾回收的时间
4、-gcutil举例:
查看堆内存空间占比情况
jstat -gcutil 13344
13152代表类的进程id,执行结果如下所示:
以上是各区域占比以及垃圾回收的情况
,S0代表幸存者0区,S1代表幸存者1区,E代表伊甸园区,O代表老年代,M代表方法区,CCS代表压缩类,以上这些值都是占比情况,YGC代表年轻代垃圾回收的次数,YGCT年轻代进行垃圾回收需要的时间,FGC代表代表Full GC的次数,FGCT代表Full GC的时间,GCT代表垃圾回收的总时间
5、-gccause举例:
发生GC的原因
jstat -gccause 13344
13344代表类的进程id,执行结果如下:
以上是各区域占比以及垃圾回收的情况,还有触发垃圾回收的原因解释
,S0代表幸存者0区,S1代表幸存者1区,E代表伊甸园区,O代表老年代,M代表方法区,CCS代表压缩类,以上这些值都是占比情况,YGC代表年轻代垃圾回收的次数,YGCT年轻代进行垃圾回收需要的时间,FGC代表代表Full GC的次数,FGCT代表Full GC的时间,GCT代表垃圾回收的总时间,LGCC和GCC代表垃圾回收的原因
②interval参数
用于指定输出统计数据的周期,单位为毫秒。即:查询间隔
,每个多少时间查询一次
③count参数
用于指定查询的总次数
④-t参数
可以在输出信息前加上一个Timestamp列,显示程序的运行时间。单位:秒
经验:↓
执行jstat -gc -t 13152 1000 10,这代表1秒打印出1行,一共10行,-t代表打印出Timestamp总运行时间,结果如下所示:
上方红色框框中代表Timestamp,而蓝色框框中代表垃圾回收时间,单位都是秒,如果让红色框框中的某两个值相减,假设这个值是num1,然后让对应行的蓝色框框中的另外两个值相减,假设这个值是num2,之后让num2/num1,得出的差值就是上述所说的GC时间占运行时间的比例
虽然这种方式比较繁琐,但是在项目部署之后就需要使用命令行去看了,就没有可视化界面了,所以这种方式也要会
左侧的是通过-t
,知道程序执行的时间,两段可以相减算出这段时间内右侧GC时间相减获得这段时间的GC时间,右侧除以左侧,就可以算出垃圾回收时间占这段程序执行时间的比例,如果比例超过20%
,就表明堆的压力比较大了
⑤-h参数
可以在周期性数据输出时,输出多少行数据后输出一个表头信息
3、补充
第1步可以执行命令:jstat -gc -t 14024 1000 10
一段时间内抽取OU中的最小值,进行比较,如果发现不断上涨,就出现内存泄露
主要用来获取某一个参数的值,修改比较少
1、基本情况
Bean对象get/set()
2、基本语法
①查看
- jinfo -sysprops 进程id
可以查看由System.getProperties()取得的参数
进程id可以通过jps命令查看,操作结果如下:
- jinfo -flags 进程id
查看当前进程曾经赋过值的一些参数情况
进程id可以通过jps命令查看,参数赋值的一部分是我们自己设置的,另外一部分是系统自动优化设置的参数信息,具体操作如下:
- jinfo -flag 参数名称 进程id
查看某个java进程的具体参数的信息
进程id可以通过jps命令查看
②修改
- 针对boolean类型
jinfo -flag [+|-]参数名称 进程id
PID可以通过jps命令查看,如果使用+号,那就可以让该参数起作用,否则使用-号就让该参数不起作用
- 针对非boolean类型
jinfo -flag 参数名称=参数值 进程id
PID可以通过jps命令查看,如果使用+号,那就可以让该参数起作用,否则使用-号就让该参数不起作用
3、拓展
①java -XX:+PrintFlagsInitial
查看所有JVM参数启动的初始值
②java -XX:+PrintFlagsFinal
查看所有JVM参数的最终值
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
更多:Java进阶核心知识集
包含:JVM,JAVA集合,网络,JAVA多线程并发,JAVA基础,Spring原理,微服务,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存等等
高效学习视频
术停滞不前!**
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-Lu76eOhP-1711932050077)]
[外链图片转存中…(img-2z4fgc80-1711932050077)]
[外链图片转存中…(img-jtLLADqg-1711932050078)]
[外链图片转存中…(img-oZQMIScC-1711932050078)]
[外链图片转存中…(img-ugZy86kl-1711932050078)]
[外链图片转存中…(img-7jFkDIGq-1711932050078)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-5FI4N5S6-1711932050079)]
更多:Java进阶核心知识集
包含:JVM,JAVA集合,网络,JAVA多线程并发,JAVA基础,Spring原理,微服务,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存等等
[外链图片转存中…(img-SFW27Lho-1711932050079)]