写点什么

第九周 性能优化(三)总结

用户头像
钟杰
关注
发布于: 2020 年 11 月 23 日

一、内容梳理

数据库架构原理

数据库架构

  • 连接器

  • 语法分析器

  • 语义分析与优化器

  • 执行引擎

数据库核心概念

  • PrepareStatement 预编译

  • B+树

  • 索引(聚簇索引和非聚簇索引)

  • 数据库事务


JVM 虚拟机原理

JVM 虚拟机组成结构



JVM 垃圾回收性能分析

回收方法

  • 清理


  • 压缩


  • 复制

分代回收

回收算法

启动参数

  • 标准参数

  • 非标准参数

  • 非 Stable 参数

JVM 性能工具

  • 基本工具:JPS ,JSTAT,JMAP,JSTACK

  • 集成工具: JConsole,JVisualVM

Java 代码优化技巧及原理

主要是两方面的问题,一方面是线程安全问题和内存管理(内存泄漏和垃圾回收)问题

合理使用线程池和对象池

  • 复用线程或对象资源,避免在程序的生命期中创建和删除大量对象

  • 池管理算法(记录哪些对象是空闲的,哪些对象正在使用)

  • 对象内容清除(ThreadLocal 的清空)

使用适合的 JDK 容器类

  • LinkList 和 ArrayList 的区别及适用场景

  • HashMap 的算法实现及应用场景

  • 使用 concurrent 包,ConcurrentHashMap 和 HashMap 的线程安全特性有什么不同?

缩短对象生命周期,加速垃圾回收

  • 减少对象驻留内存的时间

  • 在使用时创建对象,用完释放

  • 创建对象的步骤(静态代码段-静态成员变量-父类构造函数-子类构造函数)

使用 I/O buffer 及 NIO

  • 延迟写与提前读策略

  • 异步无阻塞 IO 通信

优先使用组合代替继承

  • 减少对象耦合

  • 避免太深的继承层次带来的对象创建性能损失

合理使用单例模式

  • 无状态对象

  • 线程安全

二、收获和体会


系统的学习了数据库的架构和原理,JVM 的架构和管理、垃圾回收机制,JAVA 代码优化技巧和原理

三、思考

性能优化涉及到各个方面,在使用、配置和部署系统的运行依赖环境和中间件时架构师需要充分了解运行环境的架构和原理(比如数据库的架构原理、JVM 的架构和管理才能根据应用场景进行合理的配置和优化,在遇到问题时才能根据问题的现象去快速的定位问题)

四、后续计划

不断深入的理解数据库、JVM 的原理,并且在实际的性能优化场景中根据原理判断和优化系统


用户头像

钟杰

关注

还未添加个人签名 2019.02.12 加入

还未添加个人简介

评论

发布
暂无评论
第九周 性能优化(三)总结