4.8 用户推荐指数
计算机
类型
8.1
豆瓣评分
可以朗读
语音朗读
348千字
字数
2022-04-01
发行日期
展开全部
主编推荐语
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 小结
- 附录 调优标志总结
- 关于作者
- 关于封面
- 看完了
- 版权声明
展开全部
出版方
人民邮电出版社
人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。