性能:CPU、内存、磁盘IO、网络、异常、数据库、锁竞争
- CPU 递归无线循环,正则表达式引起的回溯,JVM频繁的full GC,多线程编程造成的大量上下文切换
- 内存,java程序一般通过JVM对内存进行分配管理,主要是用JVM中的堆内存存储java创建的对象。内存是有限的,所以当内存空间被占满,对象无法回收,导致内存溢出,内存泄露。
- 磁盘IO,SSD固态比机械硬盘快
- 网络、带宽大小,传输数据比较大,或者并发量比较大的系统,网络成为性能瓶颈
- 异常、java应用中,抛出异常的需要构建异常栈,对异常进行捕获和处理,这也消耗性能,高并发引起异常的话,持续进行异常处理,系统的性能都会受到影响。
- 锁竞争、为保证原子性,用锁。但是锁可能带来上下文切换,从而给系统带来性能开销,为了降低锁竞争带来的上下文切换,java对JVM内部锁多次优化,如,新增偏向锁,自旋锁,轻量级锁,锁粗化,锁消除,如何合理利用锁资源,优化锁资源,需了解操作系统知识,java多线程基础
JDK是java语言的基础库,熟悉JDK中各个包中的工具类,可以帮助你编写高性能代码。
保证线程安全和同步锁的性能,并发性能
重点为:java对象的创建回收和内存分配。
设计模式优化架构设计,应用场景
数据库常用调优方式