阿里巴巴的开源JVM调优工具。Arthas
- 官网解释一切问题。
Arthas
不熟悉的话,直接查看快速入门,怎么下载,怎么开始玩。哪些指令是我们经常用到的。
1.dashboard
2.thread
3.thread pid
4.thread b
5.jad xxx.class 反编译代码看是否正确
6.ognl @对象全路径@属性,可以改变属性的值
- 对GC日志的分析
可以项目一启动就加载日志,参数如下:
-Xloggc:./gc-%t.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintGCCause
-XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M
通过对启动日志的分析。如果新生代,老年代,元空间有什么变化很大的话,可以根据日志情形,进行参数的调整。也可以调整垃圾收集器的类型,根据需要。不同的垃圾收集器日志是不一样的。日志很多,不好分析的话,推荐一个网页:
GC日志分析网站
将我们日志视图化,牛逼。
- 常量池
- class常量池,用javap -v xxx.java转化成容易理解的字节码文件中的con’sant pool.
当java代码运行时,就转换成运行时常量池。
2.字符串常量池
jdk1.8版本:运行时常量池在元空间,字符串常量池里在堆里,理解性的记忆,这里关键是要看几个例子。网上太多太多了。
3.基本类型对象池
Byte,Short,Integer,Long,Character,Boolean,另外两种浮点数类型的包装类则没有实现。具体细节查看包装类的源码。