首先需要找到需要进行调优的进程。

通过jps -v -l -m 找到我需要调优的进程

其中, -m表示输出传入main方法的参数,

-l表示输出的main类或jar包的名字,

-v表示传入JVM的参数

如果想要看到进程中的线程的堆栈信息,使用jstack,现在我们看6478的运行情况。

用top -Hp 6478 ,输出如下:

找到了最费cpu的时间,58秒。线程号是6479

jstack在查询的时候,线程号是用16进制表示的,将6479转换为16进制

printf "%x\n" 6479

获取194f后,使用jstack

这个耗费58秒cpu的线程是main线程,现在在处于waiting on condition 状态。

一般会出现八种状态:

死锁,deadlock

执行中,Runnable

等待资源,Waiting on condition

等待获取监视器,Waiting for monitor entry

暂停,Suspended

对象等待中,Object.wait() 或 TIMED_WAITING

阻塞,Blocked

停止,Parked

死锁:一般情况是多个线程相互资源占用,导致无法释放。

阻塞:线程在执行的过程中,所需要的资源长时间等待却一直未能获取到,被线程管理器标识为阻塞状态,也就是等待资源超时的线程。

waiting on condition : 等待资源,等待某个条件的发生。如果大量出现waiting on condition 可能是某个阻塞导致线程无法进行,比如网络阻塞。导致等待读写。

另一情况是sleep,等待睡眠结束,查看代码发现是sleep导致的,可以接受。

waiting for monitor entry和Object.wait(): 需要了解一下临界区,monitor的概念。

临界区:

临界区就是在同一时刻只能有一个任务访问的代码区。通常用这种加锁实现。

synchronized(object){

//代码块

}

monitor:java对象的内部锁。也叫作monitor锁。(理解可能有偏差)

要想访问临界区首先要获取这个锁,每个java对象都有一把锁。

waiting for monitor entry:也就是在等一个临界区,也就是在Entry Set队列中等待。

此时状态一般都是等待状态。

Object.wait():获取了监视器,又用了java.lang.Object.wait()。

也就是当线程获取monitor,也就是锁,但是发现运行的条件没满足,则调用Object(),放弃monitor,同时,机内Wait entry队列中。

如果大量线程在waiting for monitor entry

可能是一个全局锁锁住了大量的线程,导致其他的线程无法进入临界区。

通过查看进程中线程的堆栈信息。发现运行正常。接下来查看堆内存的使用情况,使用jmap。

查看堆内存中的对象数目

发现有一个对象存活了很多,需要排查一下。

经排查,这个是一个ip库保存对象,有很多个,但是不动态增加了,可以接受。

其实也可以直接使用top,查看耗费资源,如果一段时间内是稳定的,那么程序运行就稳定,也是可以接受的。

接下来查看jvm运行情况:

C 容量 U使用量

E eden    O old   P  Permanent

JVM的性能跳优的更多相关文章

  1. 2020年薪30W的Java程序员都要求熟悉JVM与性能调优!

    前言 作为Java程序员,你有没有被JVM伤害过?面试的时候是否碰到过对JVM的灵魂拷问?   一.JVM 内存区域划分 1.程序计数器(线程私有) 程序计数器(Program Counter Reg ...

  2. 最全JVM与性能调优知识点总结,看看哪些是你还没掌握的?

    前言 JVM调优是每个高级程序员的必修课,在本章中,我会从发展过程以及核心价值来剖析JVM的体系结构.为了让大家更好的理解JVM的工作机制, 我会在讲解完运行时数据区之后,再通过一个类的加载过程到这个 ...

  3. Tomcat和JVM的性能调优总结

    Tomcat性能调优: 找到Tomcat根目录下的conf目录,修改server.xml文件的内容.对于这部分的调优,我所了解到的就是无非设置一下Tomcat服务器的最大并发数和Tomcat初始化时创 ...

  4. Jvm:性能调优监控工具

    现实企业级Java开发中,有时候我们会碰到下面这些问题: OutOfMemoryError,内存不足 内存泄露 线程死锁 锁争用(Lock Contention) Java进程消耗CPU过高 .... ...

  5. 《Tomcat和JVM的性能调优你真的学会了吗?》总结篇

    Tomcat性能调优: 找到Tomcat根目录下的conf目录,修改server.xml文件的内容.对于这部分的调优,我所了解到的就是无非设置一下Tomcat服务器的最大并发数和Tomcat初始化时创 ...

  6. 一份 Tomcat 和 JVM 的性能调优经验总结!拿走不谢

    Tomcat性能调优 找到Tomcat根目录下的conf目录,修改server.xml文件的内容.对于这部分的调优,我所了解到的就是无非设置一下Tomcat服务器的最大并发数和Tomcat初始化时创建 ...

  7. 性能优化 | Tomcat和JVM的性能调优总结

    Tomcat性能调优: 找到Tomcat根目录下的conf目录,修改server.xml文件的内容.对于这部分的调优,我所了解到的就是无非设置一下Tomcat服务器的最大并发数和Tomcat初始化时创 ...

  8. jvm 的性能调优

    一个描述的比较生动的博客:JVM内存区域划分Eden Space.Survivor Space.Tenured Gen,Perm Gen解释 地址:https://www.cnblogs.com/sg ...

  9. java jvm eclipse 性能调优

    低配配置 -Dfile.encoding=UTF-8-Xms960m-Xmx960m-Xmn384m-Xverify:none-Xss256k-XX:MaxTenuringThreshold=2-XX ...

随机推荐

  1. 并发检测主机ip存活脚本

    #!/bin/bash ################### # Check Active Host####### ################### function CheckInput() ...

  2. Spring Cloud 微服务二:API网关spring cloud zuul

    前言:本章将继续上一章Spring Cloud微服务,本章主要内容是API 网关,相关代码将延续上一章,如需了解请参考:Spring Cloud 微服务一:Consul注册中心 Spring clou ...

  3. PHP新手必学之刚进公司装环境

    由于今天去一家公司做项目,又重新的装了一遍所熟悉的PHP环境,所以记录下来,总结下. PHP环境主要: PHPstudy(apache+mysql+php)+phpstorm+navicate 解释: ...

  4. 《C++游戏开发》笔记十一 平滑动画:不再颤抖的小雪花

    本系列文章由七十一雾央编写,转载请注明出处.  http://blog.csdn.net/u011371356/article/details/9430645 作者:七十一雾央 新浪微博:http:/ ...

  5. Eight(经典题,八数码)

    Eight Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  6. Brain Network (medium)(DFS)

    H - Brain Network (medium) Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d &am ...

  7. android菜鸟学习笔记18----Android数据存储(二)SharedPreferences

    数据存储的方式,有比直接文件读写更加简便的方式,那就是操作SharedPreferences. SharedPreferences一般用于存储用户的偏好设定,暂时不支持多进程操作. SharedPre ...

  8. [BJWC2012]冻结

    [BJWC2012]冻结 luogu BZOJ 分层图最短路,层与层之间连半边权边 #include<bits/stdc++.h> using namespace std; const i ...

  9. 自定义弹窗 VS AlertDialog分享弹窗

    一.摘要 弹窗通常用于提示用户进行某种操作,比如:点击分享按钮,弹窗分享对话框:双击返回按钮,弹窗退出对话框:下载文件,提示下载对话框等等,分享对话框/退出对话框/下载对话框,都可以直接使用Alert ...

  10. Linux中各种压缩文件

    .gz格式 压缩: gzip 文件名 解压: gzip -d 欲解压文件名 gunzip 欲解压文件名 说明: 1.只能压缩文件,不能压缩目录 2.压缩和解压的时候不保留原文件 .bz2格式 压缩: ...