编者按:十月围城广州,中生代技术荣幸邀请到著名Java专家江南白衣,分享《Java性能优化指南》,现场慕名江南白衣而来的观众挤满现场;
会后江南白衣花费数日整理PPT,到1.4版本共66页,内容翔实且旁征博引,不断校正且力求做到极致的匠艺精神值得尊敬!技术大牛飒然Hang如是说到:“技术大神中,除了陈皓就是白衣了,四十岁还能钻研、深究低层技术细节,且视之为乐趣,计算机基础知识也非常扎实,看他们的文章确实获益匪浅; 关于java性能调优的文章自己也一直想总结一下,看了白衣的ppt,发现自己某些地方还有一些盲点,不得不说,技术这一行永远不敢说精通,无论如何都总会有你的盲点,也总会有比你聪明则更努力的人”本文在江南白衣博客原文基础上增加了部分Slides,本文共有43张图片,可点击图片查看原图浏览,预计阅读整篇文章时间:8分钟
正文
来了唯品会一年多,不少时间花在与服务化框架、业务应用的性能的缠斗上。
前几天正好趁着中生代技术的十月十城技术沙龙,把脑海中关于性能优化的记忆全部理了一遍....讲完回家,又本着认真严谨的态度再理了一遍,终于成为现在这份66页的PPT。
范围
应用性能,受操作系统参数,三方类库选择,数据库查询,甚至压测工具如JMeter本身调优的影响。
本次分享只着重在三方面:
- JVM的调优
- 代码的调优
- 定位性能问题的工具
基本原则
网上如此多新旧不一的资料,这么多肆意传播亦真亦错的观点,怎么办呢?
- 多看一些靠谱的资料,问一些靠谱的人。
- 怀疑一切,微基准测试一切,诚意推荐JMH。
- 看JDK代码,看一切代码。
JVM优化
首先,JIT入门知识;
然后,JVM参数的简介;
再然后,最头痛的GC问题的处理。
代码优化
代码优化,两大方向:
一是面向GC的编程,
二是并发与锁,
然后再来聊聊其他。
问题定位工具集
黑盒调优是最不可靠的,推荐线下用JMC,线上用BTrace定位问题。