`

java程序性能优化——让你的java程序更快、更稳定 目录

    博客分类:
  • java
 
阅读更多

《java程序性能优化——让你的java程序更快、更稳定》
第1章 java性能调优概述 1
1.1 性能概述 1
1.1.1 看懂程序的性能 1
1.1.2 性能的参考指标 2
1.1.3 木桶原理与性能瓶颈 2
1.1.4 amdahl定律 3
1.2 性能调优的层次 5
1.2.1 设计调优 5
1.2.2 代码调优 5
1.2.3 jvm调优 6
1.2.4 数据库调优 6
1.2.5 操作系统调优 6
1.3 基本调优策略和手段 7
1.3.1 优化的一般步骤 7
1.3.2 系统优化注意事项 8
1.4 小结 8
第2章 设计优化 10
2.1 善用设计模式 10
2.1.1 单例模式 10
.2.1.2 代理模式 15
2.1.3 享元模式 24
2.1.4 装饰者模式 27
2.1.5 观察者模式 33
2.1.6 value object模式 37
2.1.7 业务代理模式 40
2.2 常用优化组件和方法 43
2.2.1 缓冲(buffer) 43
2.2.2 缓存(cache) 46
2.2.3 对象复用——“池” 50
2.2.4 并行替代串行 56
2.2.5 负载均衡 56
2.2.6 时间换空间 62
2.2.7 空间换时间 63
2.3 小结 65
第3章 java程序优化 66
3.1 字符串优化处理 66
3.1.1 string对象及其特点 66
3.1.2 substring()方法的内存泄漏 68
3.1.3 字符串分割和查找 71
3.1.4 stringbuffer和stringbuilder 74
3.2 核心数据结构 79
3.2.1 list接口 79
3.2.2 map接口 86
3.2.3 set接口 97
3.2.4 优化集合访问代码 99
3.2.5 randomaccess接口 101
3.3 使用nio提升性能 102
3.3.1 nio的buffer类族和channel 103
3.3.2 buffer的基本原理 104
3.3.3 buffer的相关操作 107
3.3.4 mappedbytebuffer性能评估 114
3.3.5 直接内存访问 116
3.4 引用类型 118
3.4.1 强引用 119
3.4.2 软引用 120
3.4.3 弱引用 121
3.4.4 虚引用 122
3.4.5 weakhashmap类及其实现 125
3.5 有助于改善性能的技巧 127
3.5.1 慎用异常 127
3.5.2 使用局部变量 128
3.5.3 位运算代替乘除法 128
3.5.4 替换switch 129
3.5.5 一维数组代替二维数组 130
3.5.6 提取表达式 131
3.5.7 展开循环 132
3.5.8 布尔运算代替位运算 133
3.5.9 使用arraycopy () 134
3.5.10 使用buffer进行i/o操作 135
3.5.11 使用clone()代替new 137
3.5.12 静态方法替代实例方法 139
3.6 小结 140
第4章 并行程序开发及优化 141
4.1 并行程序设计模式 141
4.1.1 future模式 141
4.1.2 master-worker模式 148
4.1.3 guarded suspension模式 153
4.1.4 不变模式 160
4.1.5 生产者-消费者模式 162
4.2 jdk多任务执行框架 166
4.2.1 无限制线程的缺陷 166
4.2.2 简单的线程池实现 167
4.2.3 executor框架 171
4.2.4 自定义线程池 173
4.2.5 优化线程池大小 177
4.2.6 扩展threadpoolexecutor 178
4.3 jdk并发数据结构 179
4.3.1 并发list 179
4.3.2 并发set 182
4.3.3 并发map 182
4.3.4 并发queue 183
4.3.5 并发deque 186
4.4 并发控制方法 187
4.4.1 java内存模型与volatile 187
4.4.2 同步关键字synchronized 190
4.4.3 reentrantlock重入锁 192
4.4.4 readwritelock读写锁 195
4.4.5 condition对象 196
4.4.6 semaphore信号量 198
4.4.7 threadlocal线程局部变量 200
4.5 “锁”的性能和优化 201
4.5.1 线程的开销 201
4.5.2 避免死锁 202
4.5.3 减小锁持有时间 206
4.5.4 减小锁粒度 207
4.5.5 读写分离锁来替换独占锁 208
4.5.6 锁分离 209
4.5.7 重入锁(reentrantlock)和内部锁(synchronized) 210
4.5.8 锁粗化(lock coarsening) 211
4.5.9 自旋锁(spinning lock) 212
4.5.10 锁消除(lock elimination) 212
4.5.11 锁偏向(biased lock) 214
4.6 无锁的并行计算 214
4.6.1 非阻塞的同步/无锁 214
4.6.2 原子操作 215
4.6.3 amino框架介绍 217
4.6.4 amino集合 218
4.6.5 amino树 222
4.6.6 amino图 222
4.6.7 amino简单调度模式 223
4.7 协程 226
4.7.1 协程的概念 226
4.7.2 kilim框架简介 226
4.7.3 task及其状态 227
4.7.4 fiber及其状态 228
4.7.5 kilim开发环境配置 228
4.7.6 kilim之hello world 230
4.7.7 多任务通信 232
4.7.8 kilim实例及性能评估 233
4.8 小结 236
第5章 jvm调优 237
5.1 java虚拟机内存模型 237
5.1.1 程序计数器 237
5.1.2 java虚拟机栈 238
5.1.3 本地方法栈 243
5.1.4 java堆 244
5.1.5 方法区 245
5.2 jvm内存分配参数 249
5.2.1 设置最大堆内存 249
5.2.2 设置最小堆内存 250
5.2.3 设置新生代 251
5.2.4 设置持久代 252
5.2.5 设置线程桟 253
5.2.6 堆的比例分配 254
5.2.7 堆分配参数总结 256
5.3 垃圾收集基础 257
5.3.1 垃圾收集的作用 257
5.3.2 垃圾回收算法与思想 258
5.3.3 垃圾收集器的类型 262
5.3.4 评价gc策略的指标 263
5.3.5 新生代串行收集器 264
5.3.6 老年代串行收集器 265
5.3.7 并行收集器 265
5.3.8 新生代并行回收(parallel scavenge)收集器 266
5.3.9 老年代并行回收收集器 267
5.3.10 cms收集器 267
5.3.11 g1收集器(garbage first) 270
5.3.12 stop the world案例 270
5.3.13 收集器对系统性能的影响 272
5.3.14 gc相关参数总结 273
5.4 常用调优案例和方法 275
5.4.1 将新对象预留在新生代 275
5.4.2 大对象进入老年代 278
5.4.3 设置对象进入老年代的年龄 279
5.4.4 稳定与震荡的堆大小 280
5.4.5 吞吐量优先案例 281
5.4.6 使用大页案例 282
5.4.7 降低停顿案例 282
5.5 实用jvm参数 283
5.5.1 jit编译参数 283
5.5.2 堆快照(堆dump) 284
5.5.3 错误处理 285
5.5.4 取得gc信息 285
5.5.5 类和对象跟踪 287
5.5.6 控制gc 288
5.5.7 选择类校验器 289
5.5.8 solaris下线程控制 289
5.5.9 使用大页 289
5.5.10 压缩指针 289
5.6 实战jvm调优 290
5.6.1 tomcat简介与启动加速 290
5.6.2 web应用程序介绍 292
5.6.3 jmeter介绍与使用 293
5.6.4 调优前web应用运行状况 296
5.6.5 调优过程 297
5.7 总结 298
第6章 java性能调优工具 299
6.1 linux命令行工具 299
6.1.1 top命令 299
6.1.2 sar命令 301
6.1.3 vmstat命令 302
6.1.4 iostat命令 304
6.1.5 pidstat工具 305
6.2 windows工具 309
6.2.1 任务管理器 309
6.2.2 perfmon性能监控工具 311
6.2.3 process explorer 313
6.2.4 pslist命令行 315
6.3 jdk命令行工具 317
6.3.1 jps命令 317
6.3.2 jstat命令 318
6.3.3 jinfo命令 322
6.3.4 jmap命令 323
6.3.5 jhat命令 324
6.3.6 jstack命令 326
6.3.7 jstatd命令 329
6.3.8 hprof工具 330
6.4 jconsole工具 332
6.4.1 jconsole连接java程序 332
6.4.2 java程序概况 333
6.4.3 内存监控 333
6.4.4 线程监控 335
6.4.5 类加载情况 335
6.4.6 虚拟机信息 336
6.4.7 mbean管理 337
6.4.8 使用插件 338
6.5 visual vm多合一工具 339
6.5.1 visual vm连接应用程序 339
6.5.2 监控应用程序概况 342
6.5.3 thread dump和分析 343
6.5.4 性能分析 344
6.5.5 快照 346
6.5.6 内存快照分析 347
6.5.7 mbean管理 349
6.5.8 tda使用 349
6.5.9 btrace介绍 350
6.6 visual vm对oql的支持 356
6.6.1 visual vm的oql基本语法 356
6.6.2 内置heap对象 357
6.6.3 对象函数 359
6.6.4 集合/统计函数 362
6.6.5 程序化oql 366
6.7 mat内存分析工具 368
6.7.1 初识mat 368
6.7.2 浅堆和深堆 371
6.7.3 支配树(dominator tree) 374
6.7.4 垃圾回收根 375
6.7.5 内存泄露检测 376
6.7.6 最大对象报告 378
6.7.7 查找支配者 378
6.7.8 线程分析 379
6.7.9 集合使用情况分析 380
6.7.10 扩展mat 381
6.8 mat对oql的支持 385
6.8.1 select子句 385
6.8.2 from子句 387
6.8.3 where子句 389
6.8.4 内置对象与方法 389
6.9 jprofile简介 393
6.9.1 jprofile使用配置 393
6.9.2 内存视图 394
6.9.3 堆快照 394
6.9.4 cpu视图 395
6.9.5 线程视图 397
6.9.6 jvm统计信息 397
6.9.7 触发器 398
6.10 小结 400

分享到:
评论

相关推荐

    Java程序性能优化 让你的Java程序更快、更稳定

    Java程序性能优化 让你的Java程序更快、更稳定Java程序性能优化 让你的Java程序更快、更稳定

    Java程序性能优化——让你的Java程序更快、更稳定

    Java程序性能优化——让你的Java程序更快、更稳定

    Java程序性能优化——让你的Java程序更快、更稳定 part3

    Java程序性能优化——让你的Java程序更快、更稳定

    Java程序性能优化 让你的Java程序更快、更稳定.z01

    由于上传限制大小,附件pdf由Java程序性能优化 让你的Java程序更快、更稳定.pdf 和Java程序性能优化 让你的Java程序更快、更稳定.z01组成,下载下来解压到同一个目录即可

    Java程序性能优化

    《java程序性能优化——让你的java程序更快、更稳定》共6章,先后从软件设计、软件编码、jvm调优以及程序故障排除等方面介绍针对java程序的优化方法。第1章介绍性能的基本概念、定律、系统调优的过程和注意事项;第2...

    更快、更强—— AIX性能优化

    更快、更强—— AIX性能优化 处理速度 – CPU

    java经典入门教程——自学推荐

    随着 Java Servlet 的推出,Java在电子商务方面开始崭露头角,最新的Java Server Page(JSP)技术的推出,更是让Java 成为了基于Web应用程序的首选开发工具。 Java是第一套允许使用者将应用程序通过 Internet 从远...

    大学生Java课程设计——挖地雷游戏设计报告源文件

    为此,我设计了一款简单的扫雷JAVA游戏程序,以便更好的满足广大电脑工作者闲暇之余的消遣,并且也让我更好地学习编程技术。在现代,高科技的飞跃发展,人们工作习惯的改变,特别是电脑的大量普及,人们生活节奏...

    JAVA上百实例源码以及开源项目源代码

    Java目录监视器源程序 9个目标文件 内容索引:JAVA源码,综合应用,目录监视  用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java...

    JAVA上百实例源码以及开源项目

    Java目录监视器源程序 9个目标文件 内容索引:JAVA源码,综合应用,目录监视  用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java...

    Java开发你的收集器获得更好的性能.pdf

    例如,如果程序循环遍历数组中的所有元素,JVM 就可以优化数组的边界检查,使循环更快,展开循环能提供额外的加速。但如果循环是为了找到特定元素,那目前还没有什么优化的办法,使得遍历数组和采用HashMap 的版本...

    Java性能调优标志摘要.pdf

    例如,如果程序循环遍历数组中的所有元素,JVM 就可以优化数组的边界检查,使循环更快,展开循环能提供额外的加速。但如果循环是为了找到特定元素,那目前还没有什么优化的办法,使得遍历数组和采用HashMap 的版本...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    10.5.3 instanceof运算符——让对象告诉你它的类是谁 286 10.6 小结:继承和多态让世界丰富多彩 287 10.7 习题 290 第11章 修饰符(Qualifier) 291 教学视频:26分钟 11.1 插曲:类的组成部分的名字 291 11.2...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    10.5.3 instanceof运算符——让对象告诉你它的类是谁 286 10.6 小结:继承和多态让世界丰富多彩 287 10.7 习题 290 第11章 修饰符(Qualifier) 291 教学视频:26分钟 11.1 插曲:类的组成部分的名字 291 11.2...

    Java为改善可读性和灵活性重构代码.pdf

    例如,如果程序循环遍历数组中的所有元素,JVM 就可以优化数组的边界检查,使循环更快,展开循环能提供额外的加速。但如果循环是为了找到特定元素,那目前还没有什么优化的办法,使得遍历数组和采用HashMap 的版本...

    java多线程设计模式详解(PDF及源码)

    重点回顾 练习问题 Introduction 2 多线程程序的评量标准 多线程程序的评量标准 安全性——不损坏对象 生存性——进行必要的处理 复用性——可再利用类 性能——能快速、大量进行处理 评量标准的总结 重点回顾 练习...

    java停车场管理系统——后台管理毕业设计.pdf

    更高的要求。停车是 " 速度为零的交通”,停车场及附属相关设施是静态交通的重要组成 部分。停车场收费管理系统是伴随着公用收费停车场这一新生事物而诞生的。 目前的多数停车场存在着以下几个问题,管理漏洞、系统...

    Java筛选和切片.pdf

    例如,如果程序循环遍历数组中的所有元素,JVM 就可以优化数组的边界检查,使循环更快,展开循环能提供额外的加速。但如果循环是为了找到特定元素,那目前还没有什么优化的办法,使得遍历数组和采用HashMap 的版本...

    Java新接口,可分迭代器spliterator.pdf

    例如,如果程序循环遍历数组中的所有元素,JVM 就可以优化数组的边界检查,使循环更快,展开循环能提供额外的加速。但如果循环是为了找到特定元素,那目前还没有什么优化的办法,使得遍历数组和采用HashMap 的版本...

    Java2游戏编程.pdf

    9.2 使用图像条进行更快的下载 9.3 创建屏外绘制缓冲器 9.3.1 创建BufferedGraphics类 9.3.2 通过VolatileImage类使用硬件加速 9.4 使用帧速同步来使动画完美 9.5 总结 9.6 练习 第10章 创建自定义的游戏实体类——...

Global site tag (gtag.js) - Google Analytics