一、永久代和元数据区
永久代和元数据区都是方法区的具体实现,方法区是JVM的一个概念
1.7是永久代,1.8是元数据区
区别:
二、JVM调优
调优先确定,是要保证吞吐量,还是响应时间。这2个是矛盾的,响应时间越短,吞吐量就会越少
没有最好的垃圾回收器,有些垃圾回收器响应时间短,但是吞吐量小,所以需要根据业务选项合适的垃圾收集器组合。
吞吐量优先一般选: PS+PO。响应时间优先一般选:G1。不过现在一般都是要求响应时间
三、JVM开启GC日志
-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/var/log/hbase/gc-regionserver-hbase.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=512k
案例分析
JVM内存设置越大,FGC耗时越长
CPU 100%问题排查
系统运行缓慢,CPU 100%,以及Full GC次数过多问题的排查思路
如果想看线程的jstack,就得把线程号转为16进制再 jstack,前面要加0x。如果想看进程的jstack,直接jstack加上线程号就行,但是他会列出进程下的所有线程
重点关注线程的状态:Waiting
关注这个Waiting on,表明该线程在等待什么
怎么找持有这把锁的线程?
搜索jstack dump信息,找,看哪个线程持有这把锁
线上系统,内存特别大,执行jmap指令执行期间会对进程产生很大影响,甚至卡顿,慎用