1.查看垃圾回收器版本
java -XX:+PrintCommandLineFlags -version
这些都是刚开始内存较小的时候,所以可以停止stw后面随着内存增多延伸了,内存gc多线程的。随着内存增多,线程不能太多,因为线程存在上下文切换。
出现了CMS和parNew的组合。cms相应快。并发处理,上面是并行。
初识标记:只找到根对象。刚开始stw。
并发标记:对对象树进行遍历标记,用户线程和标记线程同时进行,但是会错标,例如用户线程刚开始一个变量是null,但是后面又重新赋值,导致不是垃圾。所以要重新标记。
重新标记:三色标记法。
并发清理:用户线程和清理线程同时进行。
jps:查询java进程的标示。
jinfo:查询具体线程信息
jstat:查询gc的情况。
jstack:查询堆栈信息。
jvm调优
ARTHAS安装
MacBook下使用Arthas - 灰信网(软件开发博客聚合)
查看命令。
dashboard 查看cpu高的cpu
1.top -Hp jstack
2.arthas -dashboard thread thread xxx
死锁的排查
1.jstack命令
2.thread -b xxx
内存的排查
1.jmap -histo 线程号 | head -20
G1算法
1.可以设置最大停顿时间,最大堆内存大小。
1.ioc 控制反转,容器,bean对象。