论性能优化措施(JAVA)

一 前端性能优化

1.页面的HTTP请求数量

2.使用CDN网络

3.是否使用压缩,对于前段样式文件与脚本文件,可将其中空格、注释等不必要的字符去掉,并且通过使用gzip压缩来减少网络上传输的字节数。

二 java程序优化

1.使用单例,如饿汉

2.future编程

3.线程池。明明是多核CPU,但程序中却是用单线程串行操作,这种情况下可以将原来的串行操作改成多线程并发,以提高执行效率。

4.选择就绪。也就是使用NIO编程,代替阻塞IO能提高程序的并发吞吐能力,降低系统的开销。

5.减少上下文切换。程序在进行锁等待或者被阻塞时,当前线程会挂起。因此,如果锁的竞争激烈,或者线程频繁IO阻塞,就可能导致上下文切换过于频繁,从而增加调度开销,并且降低程序的吞吐量。

6.降低锁竞争。具体的就是synchronized锁从方法级降低,可以在具体方法内需要进行代码块同步的地方再加synchronized。

三 压缩

在进行数据传输之前,可以将数据进行压缩,以减少网络传输的字节数,提升数据传输的速度,

四 结果缓存

对于相同的用户请求,如果每次都重复地查询数据库,重复地进行计算,将浪费很多的时间和资源。将计算后的结果缓存到本地内存,或者是通过分布式缓存来进行结果的缓存,可以节约宝贵的CPU资源,减少重复的数据库查询或者磁盘IO,将原本磁头的物理转动变成内存的电子运动,提高应用的响应速度,并且线程的迅速释放也使得应用的吞吐能力得到了提升。

五 数据库的查询性能优化

1.合理使用索引。

2.反范式设计。将一些常用的需要关联查询的列进行冗余存储,以便减少表关联带来的随机IO和全表扫描。

3.使用查询缓存。通过修改配置文件来配置缓存的大小和阈值。

4.使用搜索引擎。

5.使用key-value数据库。将数据进行扁平化存储。

六 GC优化

通过GC日志能够看出一些端倪,包括minor gc的频率,full gc的频率,gc导致的停顿时间以及gc发生的原因等。可以通过这些信息来解决GC所导致的一些问题,已经对应用性能进行优化。

一般看日志就可以进行一些参数调节,比如方法区太小那就调方法区默认大小,如果想注重GC吞吐量或者是暂停时间,可以选用相应的垃圾收集器组合。

七 硬件提升性能

分布式缓存集群来说,希望内存越大越好。

磁盘IO选用SSD硬盘。

采用nginx软件负载均衡策略的网络节点来说,那网卡的吞吐能力就是性能的瓶颈。

多线程并发的时候更注重CPU的多核,越多越好。

https://www.liangzl.com/get-article-detail-16566.html

GC 日志解读

https://blog.csdn.net/renfufei/article/details/49230943

调优实战

https://blog.csdn.net/renfufei/article/details/61924893

https://blog.csdn.net/u012257955/article/details/75050893full

full GC 实战分析

https://blog.csdn.net/zawdd/article/details/50888430

https://blog.csdn.net/u012257955/article/details/75050893

https://blog.csdn.net/huaweitman/article/details/50899839

猜你喜欢

转载自blog.csdn.net/q957967519/article/details/82823094