毕业十年,年薪百万!因为我掌握这些JDK性能调优神器!(上)

简介: 类似Linux的ps,但jps只列出Java进程。可方便查看Java进程的启动类、传入参数和JVM参数。直接运行,不加参数,列出Java程序的进程ID及Main函数名称。

jps


类似Linux的ps,但jps只列出Java进程。可方便查看Java进程的启动类、传入参数和JVM参数。直接运行,不加参数,列出Java程序的进程ID及Main函数名称。

  • jps命令本质也是Java程序

image.png

  • -m:输出传递给Java进程的参数

image.png

  • -l:输出主函数的完整路径

image.png

  • -q:只输出进程ID

image.png

  • -v:显示传递给jvm的参数

1.png

jstat


观察Java应用程序运行时信息的工具,详细查看堆使用情况以及GC情况

  • jstat -options

image.png

1.2.1 jstat -class pid

显示加载class的数量及所占空间等信息

  • -compiler -t:显示JIT编译的信息

image.png

1.2.2 -gc pid

显示gc信息,查看gc的次数及时间

image.png

➜  ~ jstat -gc 87552
 S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT    CGC    CGCT     GCT
25088.0 20992.0  0.0   20992.0 500224.0 56227.0   363008.0   35238.1   76672.0 72902.5 10368.0 9590.5      9    0.078   3      0.162   -          -    0.239

image.png

-gccause

最近一次GC统计和原因

image.png

  • LGCC:上次GC原因
  • GCC:当前GC原因

image.png

image.png

jstat -gcnewcapacity pid:new对象的信息及其占用量

image.png

image.png

image.png

image.png

image.png

-gcutil

相比于-gc 参数,只显示使用率而非使用量了。

显示GC回收相关信息

image.png

image.png

-printcompilation

当前VM执行的信息

image.png

还可以同时加两个数

  • 输出进程4798的ClassLoader信息,每1秒统计一次,共输出2次

image.png

1.3 jinfo

jinfo  

查看正在运行的Java程序的扩展参数,甚至在运行时修改部分参数

查看运行时参数

image.png

image.png

在运行时修改参数值

> jinfo -flag PrintGCDetails 31518
-XX:-PrintGCDetails
> jinfo -flag +PrintGCDetails 31518
> jinfo -flag PrintGCDetails 31518
-XX:+PrintGCDetails

1.4 jmap

生成堆快照和对象的统计信息。

-histo 打印每个class的实例数目,内存占用,类全名信息. VM的内部类名字开头会加上前缀”*”. 如果live子参数加上后,只统计活的对象数量.

image.png

  • -dump:[live,]format=b,file= 使用hprof二进制形式,输出jvm的heap内容到文件=. live子选项是可选的,假如指定live选项,那么只输出活的对象到文件.

image.png

获得堆快照文件之后,我们可以使用多种工具对文件进行分析,例如jhat,visual vm等。

1.5 jhat

分析Java应用程序的堆快照文件,以前面生成的为例

image.png

jhat在分析完成之后,使用HTTP服务器展示其分析结果,在浏览器中访问http://127.0.0.1:7000/即可得到分析结果。

image.png

1.6 jstack

导出Java应用程序的线程堆栈。

jstack -l <pid>

jstack可以检测死锁,下例通过一个简单例子演示jstack检测死锁的功能。java代码如下:

1.png

1.png

  • 使用jps命令查看进程号为11468,然后使用jstack -l 11468 > a.txt命令把堆栈信息打印到文件中

1.png

目录
相关文章
|
3月前
|
NoSQL Java 关系型数据库
大厂贬值裁员,我却凭借Java开发进阶面试秘籍(核心版)逆流而上
最近参加了面试或者身边有朋友在面试的兄弟有没有发现,现在的面试不仅会问八股文,还会考察框架、项目实战、算法数据结构等等,需要准备的越来越多。
45 0
|
4月前
|
NoSQL Java 应用服务中间件
六年Java开发,分享年薪50W+架构师一路成长的辛酸
13年下半年接触java,奇遇一般参加了java培训,期间甘苦自知。14年初如愿找到人生第一份工作,工资3k;对于之前的付出也算是回报吧 ,对于当时的我已经很满足了。 但是后来没想到公司是个坑, 入司半年有余,写的代码屈指可数;但是却结交了一位良师益友对我以后的职业发展和技术上提供了明灯,给予了不少帮助。所以说(塞翁失马,焉知非福)还是有些道理的。
|
4月前
|
架构师 算法 Java
阿里年薪百万的P7架构师简历都长什么样?他们都是怎么学习的?
我有一个朋友最近想从一个中型企业跳槽到大厂,目标瞄准了美团、滴滴、字节跳动等大厂,但投了简历,都石沉大海了!
|
7月前
|
存储 缓存 安全
万字完整深入解析JVM面试必备,原来这就是和年薪百万的差距
工作之余,想总结一下JVM相关知识。话不多说直接进入主题
|
4月前
|
设计模式 算法 NoSQL
Java开发三年四面字节跳动复习一个月斩获offer,寒冬并不可怕
目前互联网行业形势越来越严峻,我接连投递了很多的简历,得到的回复却是寥寥无几,索性好好复习了大概一个半月的样子,挑战字节跳动成功!!接下来分享我在字节面试遇到的面试题,欢迎大家文末留言与我一起讨论!
|
4月前
|
Java 程序员 微服务
学历不够,技术来凑,看八年开发码农如何逆袭进阿里拿年薪百万
有人说,今年可能是过去十年最差的一年,但却是未来十年最好的一年。随着越来越多的知名企业进行大规模裁员,我们不得不承认一个事实:经济寒冬与裁员潮,将是未来常态!
|
8月前
|
消息中间件 缓存 NoSQL
闭关三月:整理出了这份对标阿里p7的java秋招面试必备指南。
大厂的面试从来不会是固定的,特别是像阿里这种一线互联网公司,想要进这种大厂,每个重点的知识点都是要了解的,给大家带来的春招面试必备指南会从面试官的心理分析,大厂经常问到的问题,以及对面试的问题分析,分享给大家,涉及到的知识点包含了有消息队列,Redis缓存,分库分表,读写分离,分布式系统,高可用架构,spring微服务,等架构专题
|
负载均衡 安全 Java
就这?腾讯云高工熬夜手写'Java微服务学习笔记'也就让我月薪涨3k
本人18年毕业于长沙某大专,实习期间进入一家和学校合作的互联网公司,一直在公司干着千篇一律的CRUD,生活看不到希望,感觉一直在这里CRUD没有希望,所以在春节回来后就离职了,一直在家中学习。和一些大佬在VX群里交流学习的过程中,无意中从一位腾讯云大佬手中拿到了这份由腾讯云大佬亲码的“Java微服务”学习笔记!
|
消息中间件 NoSQL Dubbo
突破年薪百万难关!吃透这套Java真题合集
我相信大多 Java 开发的程序员或多或少经历过BAT一些大厂的面试,也清楚一线互联网大厂 Java 面试是有一定难度的,小编经历过多次面试,有满意的也有备受打击的。因此呢小编想把自己这么多次面试经历以及近期的面试真题来个汇总分析,阐述下如何去准备,去回答面试官的提问,可以和面试官有个愉快的交谈。
112 0
|
SQL 设计模式 安全
两年Java开发工作经验面试总结
最近换了个公司,从三月底开始面,面到四月底,面了有快二十家公司。我是一个喜欢总结经验的人,每经过一场面试,我在回来的路上都会仔细回想今天哪些问题可以答的更好,或者哪些问题是自己之前没遇到过的,或者是哪个知识点今天又问了等等。四月中旬的时候,我就在构思要写一篇面经,主要是想着可能对那些跟我相同处境的人有点帮助,再者就是稍微记录下这为期一个月的面试过程。
301 0