调优目的
1.尽可能让对象在新生代进行回收,避免进入老年代
2.给内存足够大小,避免新生代频繁的进行回收
STW机制设置的原因
线程结束后,局部变量也就释放了,堆区对象的引用也就失效了,就变为垃圾对象,若不将该对象清除,就会无限大
如果不暂停用户线程,就意味着在垃圾收集过程中会持续产生新的垃圾对象,无法完全清理干净。
其次,用户线程的运行必然会导致对象的引用关系发生改变,可能出现两种情况:多标和漏标
阿里诊断 工具 Arthas
官方文档:https://arthas.aliyun.com/doc/
常用命令:
标题dashboard ,查看面板
thread ID号,进入到对应进程里面
jad 类全名 :反编译线上类,查看线上代码
退出arthas
如果只是退出当前的连接,可以用quit或者exit命令。
Attach 到目标进程上的 arthas 还会继续运行,端口会保持开放,下次连接时可以直接连接上。
如果想完全退出 arthas,可以执行stop命令。