第1章
高性能Java核心知识概述

1.1 高性能

高性能(High Performance)指程序处理速度快,所占内存少,CPU占用率低。高性能的指标和高并发的指标紧密相关,想要提高性能,就要提高系统发并发能力,两者是相互捆绑在一起的。在做性能优化时,计算密集型和I/O密集型是有很大差别的,需要分开考虑。除此之外,还可以通过增加服务器的数量、内存等提升系统的并发能力,但不要浪费资源。

假设在两台拥有相同CPU和内存的服务器上部署两个项目,接受同等的并发数量,即分别以同等数量的请求(同等压力)调用两台服务器相同的HTTP接口,若第一台服务器所消耗的CPU、内存等硬件数值更低,则第一台服务器的性能优于第二台服务器。通常更高性能的服务器代表着更高的并发。

高性能与算法和GC息息相关,算法越快,GC消耗越小。另外,对于无用对象应及时删除,每次删除都可以留下更小的遗留占比。

例如,当前场景要取出User表的所有用户的数量,若先读取User表的全部数据,再通过List.size();获得行数长度,则速度肯定没有直接从MySQL中取count值快。影响程序性能的原因极多,例如:

• 因为I/O阻塞会让CPU闲置,导致CPU浪费。

• 在多线程间增加锁来保证同步,导致并行系统串行化。

• 创建、销毁、维护太多进程和线程,导致操作系统把资源浪费在调度上。

• 没有异步返回数据进行处理。

• 数据量过大,线程循环次数过多。

• 协议消耗资源过多。

• 未控制的慢请求、慢读取造成的并发不良。