读Java性能权威指南(第2版)笔记01_导言
2023-03-31 10:36:44 时间
1. JVM调优标志
1.1. 布尔标志和附带参数的标志
1.2. 布尔标志使用的语法
1.2.1. -XX:+FlagName表示开启
1.2.2. -XX:-FlagName表示关闭
1.3. 附带参数的标志使用的语法
1.3.1. -XX:FlagName=something,表示设置FlagName的值为something
2. 多核硬件
2.1. 超线程是Intel常用的术语
2.2. AMD(和其他厂商)则使用同时多线程
2.3. 一些芯片制造商称之为核心内的硬件线程(hardware strands within a core)
2.4. 垃圾回收很大程度上是CPU密集型任务
3. 软件容器
3.1. 虚拟机
3.1.1. 在运行的硬件子集上建立了完全隔离的操作系统副本
3.2. Docker
3.2.1. 只是操作系统中的一个进程(可能受资源限制)
3.2.2. Java有丰富的性能问题诊断工具集,而Docker容器里没有
3.2.3. 在Docker中以小数形式限制CPU数量,Java会对小数向上取整
4. 全面的性能
4.1. 通用的准则
4.1.1. 给已经过载的系统增加负载,系统的性能会变差
4.1.2. 给系统中低效的部分增加负载会让整个系统变慢
4.1.2.1. 将负载添加到CPU密集型服务器上
4.1.2.2. 让更多线程去获取已经有线程等待的锁
4.2. 写出更好的算法
4.2.1. 好的算法对于提升性能是至关重要的
4.2.1.1. 没有可行的优化方式,能让基于数组的代码和使用哈希映射(hash map)一样快
4.3. 写更少的代码
4.3.1. 定期的性能测试可以找出性能下降的原因
4.3.2. 每个应用程序的性能都会随着时间下降
4.3.2.1. 随着应用程序新版本的发布而下降
4.3.3. 添加新特性和使用新标准只会导致应用程序越来越大、越来越慢
4.4. 过早优化
4.5. 数据库永远是瓶颈
4.6. 测试工具也是最有可能出问题的
4.7. 常见优化
4.7.1. 通过分析来优化代码,并专注于优化其中最耗时的操作
4.7.2. 使用奥卡姆剃刀原理来诊断性能问题
4.7.2.1. 新增代码的bug比机器配置更有可能带来性能问题
4.7.2.2. 机器配置比JVM和操作系统的bug更有可能带来性能问题
4.7.3. 为应用程序的常见操作提供简单的算法
4.8. JVM只是整体性能的一小部分
4.9. 数据库和其他后端系统的性能同JVM一样重要
相关文章
- 深入探讨Java中的异常与错误处理
- 研究学习Kotlin的一些方法
- 数据显示Java热度持续下落,日子屈指可数?
- 2017年5月编程语言排行榜:Java与C语言优势正开始缩小
- Java多线程之内置锁与显示锁
- Java线程池的理论与实践
- 白话阿里巴巴Java开发手册(编程规约)
- 关于Java你不知道的十件事
- Java服务化系统线上应急和技术攻关,你必须掌握的Linux命令
- Java实现高斯模糊和图像的空间卷积
- Java阻塞队列实现原理分析
- NPM使用技巧
- Node.js对Java开发者而言是什么?
- Java反射机制应用实践
- 理解RxJava中的Single和Completable
- 2017年你不能错过的Java类库
- 大规模集群下的Hadoop NameNode
- 从源码解密Spark内存管理
- 2017年3月编程语言排行榜:Swift首次进入前十
- JVM热点技术:Java类的加载机制