JVM
文章平均质量分 72
勿视人非
知道的少时,觉得自己什么都会;知道的多时,觉得自己什么都不会
展开
-
jvm jstat 命令
jstat可以查看JVM运行的实时监控信息,主要包括GC情况和内存堆的使用情况。语法jstat -options JVM进程ID或jstat -options JVM进程ID interval countinterval : 表示刷新时间间隔,单位ms。count : 表示一共刷新多少次,达到指定此次后,退出监控。常用的options参数class : 类装载、卸载数量、总空间及类状态消耗的事件gc : 监视Java堆的信息,包括Eden、Survivor、老年代、方法区(永.原创 2022-05-01 11:59:36 · 697 阅读 · 0 评论 -
jvm jmap 命令 和 MAT 工具
1. 查看heap(堆)内存中的实例数量和占用内存的大小命令:jmap -histo JVM进程ID直接使用上面的命令,打印的东西太多,可以使用下面的命令只显示前50行:jmap -histo JVM进程ID | head -n50或者使用下面的命令,通过翻页的方式查看:jmap -histo JVM进程ID | more如果想 只统计存活的对象 ,可以使用下面的命令,该命令会 先触发JVM执行GC(垃圾回收),然后再统计信息 :jmap -histo:live JVM进程ID2原创 2022-05-01 10:38:10 · 337 阅读 · 0 评论 -
jvm jstack 命令
jstack命令可以查看JVM内所有的线程运行情况。语法jstack [-l] -[e] pid参数说明:l : 打印关于锁的附加信息e : 打印关于线程的附加信息,这个参数用的较少常用的命令查看JVM中所有的线程运行情况jstack -l JVM进程ID | more当JVM中存在死锁时,在jstack输出信息的最后会有提示:统计线程数量搜索关键字java.lang.Thread.State,可以统计出线程总数jstack -l JVM进程ID | grep 'java原创 2022-04-30 23:50:59 · 652 阅读 · 0 评论 -
OOM分析与定位
OOM 即 out of memory(内存溢出),当程序运行时所需要的内存超出了JVM管理的最大内存就会导致内存溢出。经常与内存溢出一起被提及的概念还有内存泄漏(memory leak),内存泄漏一般是指资源应释放而未释放,内存应回收而未回收,造成系统资源或内存浪费。当内存泄漏累计之后,资源和内存会被逐渐耗光,导致程序运行越来越慢,可能会导致OOM,甚至程序奔溃。当内存溢出发生时,会抛出OutOfMemoryError或者StackOverflowError异常。但是当内存泄漏发生时,若还有资源和内.原创 2022-04-30 16:40:26 · 6280 阅读 · 0 评论 -
CPU高位运行问题定位
目录JVM CPU占用高的原因问题定位的步骤JVM CPU占用高的原因CPU高位运行可能的原因是:死循环。深度递归。内存不足,导致频繁的FULL GC。存在大量的线程,线程间频繁的切换。问题定位的步骤关键是找到导致CPU高位运行的线程。使用top命令进入监控视图,按P键,将进程按占用CPU的大小排序 ,即可找到占用CPU多的进程PID。关于top命令的使用,可以查看 top命令的常用方式2. 使用top -Hp PID命令,显示进程中的线程信息,同样按P键,将线程按占用C原创 2022-04-30 16:10:54 · 1508 阅读 · 0 评论 -
频繁的Full GC的问题排查
可能触发Full GC的原因显示调用了System.gc()。老年代空间不足。Minor GC时空间分配担保失败,新生代对象晋级老年代,大对象分配空间等情况。如果Full GC后空间仍然不足,则抛出错误:java.lang.OutOfMemoryError: Java heap space。永久代或者元空间满了。如果经过Full GC仍然回收不了,那么JVM会抛出错误信息:java.lang.OutOfMemoryError: PermGen space 。内存泄露也会导致频繁的GC。大量的线程原创 2022-05-01 12:14:28 · 5062 阅读 · 0 评论 -
JAVA线程死锁排查
造成死锁的原因死锁是指两个或两个以上的线程在执行过程中,因争夺锁而造成的一种互相等待的现象,若无外力作用,它们都将一直等待下去。造成死锁的示例有两把锁,lock1、lock2线程t1获取了锁lock1,等待锁lock2线程t2获取了锁lock2,等待锁lock1线程t1和t2相互等待对方已获取的锁,又不释放自己已获取的锁,导致两个线程相互等待,发生死锁。public class DeadlockTest { private final Object lock1 = new Obje原创 2022-04-30 17:14:18 · 713 阅读 · 0 评论