合集-读Java性能权威指南(第2版)

摘要:1. Survivor空间 1.1. 新生代被划分为两个Survivor空间和一个Eden空间的原因 1.1.1. 刚刚被创建并且还在使用中,所以不能被回收,但它们的寿命并没有长到足以进入老年代 1.1.2. 仍在新生代中的对象有额外的机会被回收,而不是晋升到(并填满)老年代 1.2. 首次新生代回 阅读全文
posted @ 2023-03-18 07:57 躺柒 阅读(88) 评论(0) 推荐(0) 编辑
摘要:1. 巨型对象 1.1. humongous object 1.2. 大于等于区域一半大小的对象 1.3. 巨型对象被直接分配在老年代,所以它在新生代回收期间不会被释放 1.4. G1区域的大小是2的幂,最小值是1 MB 1.5. 如果堆的最大值和初始值差别很大,就会有过多的G1区域,这种情况下应该 阅读全文
posted @ 2023-03-19 07:03 躺柒 阅读(60) 评论(0) 推荐(0) 编辑
摘要:1. 性能优化是围绕工具展开的 1.1. 最重要的工具大都是Java开发工具包(JDK)自带的 1.2. 查看应用程序性能时,首先应该考察的就是CPU时间 2. 操作系统工具 2.1. Unix系统 2.1.1. sar(System Accounting Report)及其组成工具 2.1.2.  阅读全文
posted @ 2023-03-20 06:26 躺柒 阅读(105) 评论(0) 推荐(0) 编辑
摘要:1. 性能分析工具 1.1. 必须有足够大的堆来处理数据 1.2. 运行性能分析工具时开启并发GC算法 1.3. 不合时宜的Full GC暂停会导致缓冲区的数据溢出 1.4. 性能分析的一个缺陷就是在应用程序中引入测试会改变其性能 1.5. 在工作时要“附加”到被分析的应用程序上 1.5.1. 通过 阅读全文
posted @ 2023-03-21 06:26 躺柒 阅读(74) 评论(0) 推荐(0) 编辑
摘要:1. Java飞行记录器 1.1. Java Flight Recorder,JFR 1.1.1. 最初是BEA公司的JRockit JVM的功能 1.1.2. 在JDK 8中,只有Oracle JVM支持JFR 1.1.3. 在JDK 11中,JFR可以在开源JVM中使用 1.2. JFR数据是J 阅读全文
posted @ 2023-03-22 07:11 躺柒 阅读(130) 评论(0) 推荐(0) 编辑
摘要:1. 测试真实的应用程序 1.1. 应该以实际产品的使用方式进行测试 1.2. 所有的基准测试通常都包括一个预热期,在这期间,JVM可以将代码编译到最佳状态 1.3. 微基准测试(microbenchmark) 1.3.1. 通过测量一小部分代码的性能来确定多种实现中哪个最好 1.3.2. 必须读取 阅读全文
posted @ 2023-03-23 06:25 躺柒 阅读(76) 评论(0) 推荐(0) 编辑
摘要:1. 理解可变性 1.1. 理解测试结果如何随时间变化 1.2. 可以通过多次运行测试后取平均值来解决 1.3. 因代码改进而进行的测试叫作回归测试(regression testing) 1.3.1. 原本的代码叫作基线(baseline) 1.3.2. 新的代码叫作样本(specimen) 1. 阅读全文
posted @ 2023-03-24 06:33 躺柒 阅读(65) 评论(0) 推荐(0) 编辑
摘要:1. 线程和硬件 1.1. 给CPU增加超线程并不能使应用程序性能翻倍 2. 线程池 2.1. 任务被提交到一个队列(可能有不止一个队列),然后一定数量的线程会从队列中取出任务并执行它们 2.2. 线程池的大小对获取最佳性能至关重要 2.2.1. 在某些情况下,过大的线程池会对性能造成损害 2.3. 阅读全文
posted @ 2023-03-25 08:30 躺柒 阅读(48) 评论(0) 推荐(0) 编辑
摘要:1. 同步 1.1. 代码块对一组变量的访问看上去是串行的:每次只有一个线程可以访问内存 1.1.1. 由synchronized关键字保护的代码块 1.1.2. 用java.util.concurrent.lock.Lock类的实例保护的代码 1.1.3. java.util.concurrent 阅读全文
posted @ 2023-03-26 07:58 躺柒 阅读(75) 评论(0) 推荐(0) 编辑
摘要:1. JVM线程优化 1.1. 当空间不足时,可以调整线程使用的内存 1.2. 每个线程都有一个原生栈,操作系统会在这里存储线程的调用栈信息 1.3. 原生栈的大小是1 MB 1.3.1. 32位的Windows JVM原生栈大小是320KB 1.3.2. 在64位的JVM中,通常不会修改这个值 1 阅读全文
posted @ 2023-03-27 06:40 躺柒 阅读(68) 评论(0) 推荐(0) 编辑
摘要:1. 响应式编程 1.1. 使用基于事件的范式处理异步数据流 1.2. 和异步编程提供了相同的性能优势 1.3. 能够扩展程序(特别是扩展I/O)以处理很多连接和数据源 2. 非阻塞I/O 2.1. 有效扩展服务器的基础 2.2. 允许服务器用相对较少的线程处理相对较多的连接 2.2.1. 传统的服 阅读全文
posted @ 2023-03-28 06:40 躺柒 阅读(67) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示