正如Thread Dump文件记录了当时JVM中线程运行的情况一样,Heap Dump记录了JVM中堆内存运行的情况。
可以通过以下几种方式生成Heap Dump文件:
1使用 jmap 命令生成(其中的pid是JVM进程的id,heap-dump.bin
是生成的文件名称,在执行命令的目录下面。推荐此种方法)
jmap -dump:live,format=b,file=heap-dump.bin <pid>
2 ,jconsole生成
获取thread dump文件的方式
jstack -l pid
各个命令的详解以及用法
https://my.oschina.net/feichexia/blog/196575
load值超过1说明cpu超负载 (一条公路开始堵车)造成cpu load过高的原因.从编程语言层次上full gc次数的增大或死循环都有可能造成cpu load 增高
cpu负载率过高问题排查(查询到具体线程号[tid]占用cpu资源过大的过程)jstack pid |grep tid
jstack -l pid (能查出来所有进程号下得线程id即tid)
https://blog.csdn.net/u010862794/article/details/78020231?locationNum=4&fps=1
free命令
线程异常的状态分析
https://www.javatang.com/archives/2017/10/26/08572060.html
https://segmentfault.com/a/1190000010973341
https://blog.csdn.net/bluetjs/article/details/78040571
linux下用top命令查看cpu利用率超过100%
https://blog.csdn.net/yrryyff/article/details/83588228
load值为什么>1
https://www.jianshu.com/p/d07b51fe9855
我们举个例子:高速公路收费站10个车道,那当有1-9辆车在不同的通道通过时,认为收费站的load<1;当正好10辆车在不同的通道时,load=1;当超过10辆车(假设每个通道是均匀有车)时,load>1.假设有100辆车,每个通道10辆,那就说明能有10辆车能过去,另外90辆车则需要等待。此时收费站的load为100/10=10. 这个10的负载表示系统当前满负荷运转,且还有相当于90%的满负载的请求在等待。
但是经常我们也看到load average 有高达6,那真的是有问题嘛?不一定,因为它是基于操作系统的内核的数量决定的,一般可以简单粗暴的理解为内核load之和。 比如现在一般都是8个内核,那么load average的值就是8、
一般业界能够被接受的值是, load average <= CPU核数 *0.7。 但现在硬件越来越便宜,核数庞大的机器也越来越大,如遇到机器的CPU核数很大,那么剩余的30%部分也越大,这个时候可以适当的调整下,只要不要到整个核数都用满。
作者:果酱呐
链接:https://www.jianshu.com/p/d07b51fe9855
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。