Java性能优化个人觉得是Java进阶的必经之路。很多Java工程师对于执行代码后,底层运行的Java虚拟机可能一知半解。Java相比C/C++最大的区别是,少了内存管理。让工程师可以专注于应用主体逻辑,而不用去管理内存的使用,但这是一把双刃剑,如果让程序达到最佳的性能,是Java性能优化的初衷。
关于Java性能调优或者是关于性能调优,有诸多的影响因素,JVM只占了整体性能的一小部分。不单单是Java虚拟机本身,还有数据库连接,网络开销等等。我们今天就专注于应用本身。
了解数据结构和算法的人,是非常清楚一个好的算法和一个差的算法的差距是多么大。对于应用编码本身也是一样。好方法的封装,往往可以节省更多的内存空间和时间,并且对于异常处理很到位,而不是像刚接触编程语言的小白,目的是一股脑先实现具体的功能。对于应用的编码要具有工匠精神,保证可读性的基础上去追求更好的性能。
同样的一个功能,更少的代码的小程序会比大程序的运行速度要快,需要编译的代码越多,等待程序启动所耗费的时间就越长,要创建和销毁的对象越多,垃圾收集的工作量就越大;要分配和持有的对象越多,GC的周期就越长;要从磁盘装载进JVM的类越多,程序启动所花费的时间就越长;要执行的代码越多,机器硬件缓存的效率就越低;而执行的代码越多,花费的时间就越长。
同样的,当引入的小功能,造成性能的小衰减,但是当应用越来越大时,累计的小衰减,会积少成多造成应用性能的显著下降。
原话是“我们不应该把大量时间都耗费在那些小的性能改进上;过早考虑优化是所有噩梦的根源”,在应用的功能初期就需要编写可读性高,结构清晰的代码。这里所指的过早优化,并不包括避免那些已经知道对性能不好的代码结构。每行代码,如果有两种简单、直接的编程方式,那就应该选择性能更好的那种。
借助性能分析来优化代码,重点关注性能分析中最耗时的操作。然而请注意,这并不意味着只看性能分析中的叶子方法,
利用奥卡姆剃刀原则诊断性能问题。性能问题最可能的原因应该是最容易解释的:新代码比机器配置更可能引入性能问题,而机器配置比JVM或者操作系统的bug更容易引入性能问题。
为应用中最常用的操作编写简单算法。以估算数学公式的程序为例,用户可以决定他所期望的最大容许误差为10%或1%。如果10%的误差适合多数用户,那么优化代码就意味着即便误差范围缩小为1%,但是速度变慢了
**最近小编刷到这份高效存储让项目性能起飞的性能优化的资源库,包含Redis,MongoDB,Mysql性能优化,解决你在项目开发过程中的困惑以及面试时的焦虑。
关于这份性能优化的资源库,我只能在文章中展示部分的章节内容和核心截图

第一部分 : MySQL 常用对象


第二部分 : MySQL体系结构,存储引擎及SQL优化


第三部分 : MySQL缓存,参数调整及锁


第四部分 : MySQL 常用工具、主从复制及综合案例




基础部分

应用部分

原理部分

集群部分

拓展部分

源码部分
** 「基数树」内部**

MongoDB快速上手

MongoDB-集群安全
