用Java Flight Recorder来调优JVM性能
随着Java程序在后端压倒性的普及,其性能本身早已经无人质疑;然而一个经常不为人道的事实是,Java平台上的程序不是天然就具有很高的性能; 因为Java语言显著降低了程序员的准入门槛,真正到系统性能这一块,仍然需要大量的调试和优化,即所谓的JVM性能调优。
随着Java程序在后端压倒性的普及,其性能本身早已经无人质疑;然而一个经常不为人道的事实是,Java平台上的程序不是天然就具有很高的性能; 因为Java语言显著降低了程序员的准入门槛,真正到系统性能这一块,仍然需要大量的调试和优化,即所谓的JVM性能调优。
最近在跟踪项目的性能测试的过程中,发现了一个奇怪的问题:Netty服务器端新建的Channel的数目比Tcpdump抓包得到的经历过三次握手成功的连接数要少: 总有几个连接从抓包来看成功,然后Netty并没有为其分配Channel。直观上来看,似乎是Netty的处理问题值得怀疑,似乎是用于接受新连接的线程池堵塞了。
最近在参与某开发小组的团体代码审查会的时候,发现组内的一线开发工程师对于何时应该做空指针检查并没有很清晰的认识;然而这在Java社区里早已经是个老生常谈的争论 。
Java8是日益臃肿、略显老态的老牌程序语言对日益流行的新的函数式编程范式的反击; 它采用了巧妙的技术让自己面向对象的古老躯体也套上了函数式编程的舞鞋再度翩翩起舞,焕发新的光彩。