文章目录
1.导论
2.性能测试方法
3, Java性能调优工具
3.2 java 监控工具
3.2.1 基本信息
3.3 性能分析工具
3.3.1 采样分析器
3.3.2 探查分析器
3.3.3 阻塞方法和线程时间线
3.3.4 本地分析器
3.4 Java任务控制
3.4.1 Java飞行记录器
4. JIT编译器
4.1 编译器介绍
4.2 调优入门: 选择编译器类型
4.2.1 优化启动
4.2.2 优化批处理
4.2.3 优化长时间运行的应用
4.3 Java和JIT编译器版本
4.4 编译器中级调优
4.4.1 调优代码缓存
4.4.2 编译阈值
4.4.3 检测编译过程
4.5 高级编译器优化
4.5.1 编译线程
4.5.2 内联
4.5.3 逃逸分析
4.6 逆优化
4.6.1 代码被丢弃
4.6.2 逆优化僵尸代码
4.7 分层编译级别
4.8 小结
5. 垃圾回收器入门
5.1 垃圾收集概述
6. 垃圾回收器算法
6.1 理解Throughput收集器
7. 堆内存最佳实践
7.1 堆分析
7.1.1 堆直方图
7.1.2 堆转储
7.1.3 内存溢出错误
7.2 减少内存使用
7.2.1 减少对象大小
7.2.2 延迟初始化
7.2.3 不可变对象和标准化对象
7.2.4 字符串的保留
7.3 对象生命周期管理
7.3.1 对象重用
7.3.2 弱引用、 软引用与其他引用
1. 软引用
**2.弱引用**
3. 终结器(Finalizer) 和最终引用(Final Reference)
8.原生内存最佳实践
8.1 内存占用
8.1.1 测量内存占用
8.1.2 内存占用最小化
8.1.3 原生NIO缓冲区
8.1.4 原生内存跟踪
8.2 针对不同操作系统优化JVM
8.2.1 大页
8.2.2 压缩的oop
9.线程与同步的性能
9.1 线程池与ThreadPoolExecutor
9.2 ForkJoinPool
9.3 线程同步
9.3.1 同步的代价
1. 同步与可伸缩性
2. 锁定对象的开销
9.3.2 避免同步
9.3.3 伪共享
9.4 JVM线程调优
9.4.1 调节线程栈大小
9.4.2 偏向锁
9.4.3 自旋锁
9.4.4 线程优先级
9.5 监控线程与锁
9.5.1 查看线程
9.5.2 查看阻塞线程
10.Java EE性能调优
11. 数据库性能的最佳实践
11.1.5 结果集的处理
11.2 JPA
12.Java SE API技巧
12.1 缓冲式I/O
12.2 类加载
12.3 随机数
12.4 Java原生接口
12.5 异常
12.6 字符串的性能
12.7 日志
12.8 Java集合类API
12.8.1 同步还是非同步
12.8.2 设定集合的大小
12.8.3 集合与内存使用效率
12.9 AggressiveOpts标志
12.10 Lambda表达式和匿名类
12.11 流和过滤器的性能
文章目录
1.导论
2.性能测试方法
3, Java性能调优工具
3.2 java 监控工具
3.