展开全部

主编推荐语

java语言程序设计,从入门到实践基础教程,涵盖Java 8和Java 11等常用版本,Java性能团队前核心成员心血之作。

内容简介

本书从JVM和Java API两个方面,深入地介绍了Java 8和Java 11等新的Java长期支持版本中影响性能的因素。

本书先从Java应用程序的通用方法、基准测试的缺陷、性能监控工具等方面,分析了如何通过JVM的配置方式影响程序的性能;接着从即时编译、垃圾回收、堆内存与原生内存最佳实践、线程与同步的性能等方面,分析了常见的优化方向及其特性。

第2版专注于更加成熟的Java 8和Java 11,主要的更新内容涉及G1垃圾回收器和Java飞行记录器,以及Java在容器化环境下的性能变化。

目录

  • 版权信息
  • O'Reilly Media, Inc. 介绍
  • 业界评论
  • 本书赞誉
  • 前言
  • 读者对象
  • 第2版新增内容
  • 排版约定
  • 使用代码示例
  • 联系我们
  • 致谢
  • 第1章 导论
  • 1.1 概述
  • 1.2 平台和约定
  • 1.2.1 Java平台
  • 1.2.2 硬件平台
  • 1.3 全面的性能
  • 1.3.1 写出更好的算法
  • 1.3.2 写更少的代码
  • 1.3.3 过早优化
  • 1.3.4 其他:数据库永远是瓶颈
  • 1.3.5 常见优化
  • 1.4 小结
  • 第2章 性能测试方法
  • 2.1 测试真实的应用程序
  • 2.1.1 微基准测试
  • 2.1.2 宏基准测试
  • 2.1.3 介基准测试
  • 2.2 理解吞吐量、批处理时间和响应时间
  • 2.2.1 测量批处理时间
  • 2.2.2 测量吞吐量
  • 2.2.3 测量响应时间
  • 2.3 理解可变性
  • 2.4 早测试、常测试
  • 2.5 基准测试示例
  • 2.5.1 Java微基准测试工具
  • 2.5.2 常用代码示例
  • 2.6 小结
  • 第3章 Java性能工具箱
  • 3.1 操作系统工具和分析
  • 3.1.1 CPU使用率
  • 3.1.2 CPU运行队列
  • 3.1.3 磁盘使用率
  • 3.1.4 网络使用率
  • 3.2 Java监控工具
  • 3.2.1 基本的VM信息
  • 3.2.2 线程信息
  • 3.2.3 类信息
  • 3.2.4 实时GC分析
  • 3.2.5 堆转储后期处理
  • 3.3 性能分析工具
  • 3.3.1 采样分析器
  • 3.3.2 探查分析器
  • 3.3.3 阻塞方法和线程时间线
  • 3.3.4 原生分析器
  • 3.4 JFR
  • 3.4.1 Java Mission Control
  • 3.4.2 JFR概览
  • 3.4.3 开启JFR
  • 3.4.4 选择JFR事件
  • 3.5 小结
  • 第4章 使用即时编译器
  • 4.1 即时编译器:概览
  • 热点编译
  • 4.2 分层编译
  • 4.3 常用的编译器标志
  • 4.3.1 优化代码缓存
  • 4.3.2 检查编译过程
  • 4.3.3 分层编译级别
  • 4.3.4 逆优化
  • 4.4 高级编译器标志
  • 4.4.1 编译阈值
  • 4.4.2 编译线程
  • 4.4.3 内联
  • 4.4.4 逃逸分析
  • 4.4.5 CPU相关代码
  • 4.5 分层编译的权衡
  • 4.6 GraalVM
  • 4.7 预编译
  • 4.7.1 提前编译
  • 4.7.2 GraalVM原生编译
  • 4.8 小结
  • 第5章 垃圾回收简介
  • 5.1 垃圾回收概览
  • 5.1.1 分代垃圾回收器
  • 5.1.2 GC算法
  • 5.1.3 选择GC算法
  • 5.2 GC优化基础
  • 5.2.1 调整堆的大小
  • 5.2.2 调整分代大小
  • 5.2.3 调整元空间大小
  • 5.2.4 控制并行
  • 5.3 GC工具
  • 5.3.1 在JDK 8中开启GC日志
  • 5.3.2 在JDK 11中开启GC日志
  • 5.4 小结
  • 第6章 垃圾回收算法
  • 6.1 理解Throughput回收器
  • 堆大小的自适应优化和静态优化
  • 6.2 理解G1垃圾回收器
  • 优化G1 GC
  • 6.3 理解CMS回收器
  • 针对并发模式失败的优化
  • 6.4 高级优化
  • 6.4.1 晋升和Survivor空间
  • 6.4.2 分配大对象
  • 6.4.3 AggressiveHeap 标志
  • 6.4.4 完全掌控堆的大小
  • 6.5 实验性GC算法
  • 6.5.1 并发压缩:ZGC和Shenandoah
  • 6.5.2 无回收:Epsilon GC
  • 6.6 小结
  • 第7章 堆内存最佳实践
  • 7.1 堆分析
  • 7.1.1 堆直方图
  • 7.1.2 堆转储
  • 7.1.3 内存溢出错误
  • 7.2 减少内存使用
  • 7.2.1 减小对象大小
  • 7.2.2 使用延迟初始化
  • 7.2.3 使用不可变对象和标准化对象
  • 7.3 对象生命周期管理
  • 7.3.1 对象重用
  • 7.3.2 软引用、弱引用和其他引用
  • 7.3.3 压缩的普通对象指针
  • 7.4 小结
  • 第8章 原生内存最佳实践
  • 8.1 内存占用
  • 8.1.1 测量内存占用
  • 8.1.2 最小化内存占用
  • 8.1.3 原生内存跟踪
  • 8.1.4 共享库原生内存
  • 8.2 针对操作系统的JVM优化
  • 大页
  • 8.3 小结
  • 第9章 线程和同步性能
  • 9.1 线程和硬件
  • 9.2 线程池和 ThreadPoolExecutor
  • 9.2.1 设置最大线程数
  • 9.2.2 设置最小线程数
  • 9.2.3 线程池任务大小
  • 9.2.4 设置 ThreadPoolExecutor 的大小
  • 9.3 ForkJoinPool
  • 9.3.1 工作窃取
  • 9.3.2 自动并行化
  • 9.4 线程同步
  • 9.4.1 同步的代价
  • 9.4.2 避免同步
  • 9.4.3 伪共享
  • 9.5 JVM线程优化
  • 9.5.1 优化线程栈大小
  • 9.5.2 偏向锁
  • 9.5.3 线程优先级
  • 9.6 监控线程和锁
  • 9.6.1 查看线程
  • 9.6.2 查看阻塞线程
  • 9.8 小结
  • 第10章 Java服务器
  • 10.1 Java NIO概览
  • 10.2 服务器容器
  • 10.2.1 优化服务器线程池
  • 10.2.2 异步REST服务器
  • 10.3 异步出站调用
  • 异步HTTP
  • 10.4 JSON处理
  • 10.4.1 解析和解码概览
  • 10.4.2 JSON对象
  • 10.4.3 JSON解析
  • 10.5 小结
  • 第11章 数据库性能最佳实践
  • 11.1 示例数据库
  • 11.2 JDBC
  • 11.2.1 JDBC驱动
  • 11.2.2 JDBC连接池
  • 11.2.3 预处理语句和语句池
  • 11.2.4 事务
  • 11.2.5 结果集处理
  • 11.3 JPA
  • 11.3.1 优化JPA写
  • 11.3.2 优化JPA读
  • 11.3.3 JPA缓存
  • 11.4 Spring Data
  • 11.5 小结
  • 第12章 Java SE API技巧
  • 12.1 字符串
  • 12.1.1 紧凑字符串
  • 12.1.2 重复字符串和字符串保留
  • 12.1.3 字符串连接
  • 12.2 缓冲I/O
  • 12.3 类加载
  • 类数据共享
  • 12.4 随机数
  • 12.5 Java原生接口
  • 12.6 异常
  • 12.7 日志
  • 12.8 Java集合API
  • 12.8.1 同步和非同步
  • 12.8.2 设置集合大小
  • 12.8.3 集合与内存效率
  • 12.9 Lambda和匿名类
  • 12.10 流和过滤器的性能
  • 延迟遍历
  • 12.11 对象序列化
  • 12.11.1 瞬时字段
  • 12.11.2 覆盖默认的序列化
  • 12.11.3 压缩序列化数据
  • 12.11.4 跟踪重复对象
  • 12.12 小结
  • 附录 调优标志总结
  • 关于作者
  • 关于封面
  • 看完了
  • 版权声明
展开全部

评分及书评

4.8
4个评分

出版方

人民邮电出版社

人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。