Java程序性能优化

出版时间:2012-9-1  出版社:清华大学出版社  作者:葛一鸣  页数:400  字数:649000  
Tag标签:无  

前言

关于JavaJava是目前应用最为广泛的软件开发平台之一。随着Java以及Java社区的不断壮大,Java也早已不再是简简单单的一门计算机语言了,它更是一个平台、一种文化、一个社区。作为一个平台,JVM虚拟机扮演着举足轻重的作用。除了Java语言,任何一种能够被编译成字节码的计算机语言都属于Java这个平台。Groovy、Scala、JRuby等都是Java平台的一个部分,它们依赖于JVM虚拟机,同时,Java平台也因为它们变得更加丰富多彩。作为一种文化,Java几乎成为了“开源”的代名词。在Java程序中,有着数不清的开源软件和框架,如Tomcat、Struts、Hibernate、Spring等等。就连JDK和JVM自身也有不少开源的实现如OpenJDK、Harmony。可以说,“共享”的精神在Java世界里体现得淋漓尽致。作为一个社区,Java拥有无数的开发人员,数不清的论坛、资料。从桌面应用软件、嵌入式开发到企业级应用、后台服务器、中间件,都可以看到Java的身影。其应用形式之复杂、参与人数之庞大也令人咋舌。可以说,Java社区已经俨然成为了一个良好而庞大的生态系统。此外,纯粹作为一门软件开发语言,Java非常容易学习,其学习曲线较C++等老牌计算机语言相比,也比较平缓。因为它尽力简化或去除了C++中许多晦涩、多余和难以理解的部分,如指针、虚函数、多继承等。本书架构本书主要介绍Java应用程序的优化方法和技巧,总共分为6章。第1章是综述,介绍了性能的基本概念,两个重要的定律(木桶原理和Amdahl定律),以及系统调优的一般过程与注意事项。第2章从设计层面,介绍了与性能相关的设计模式、组件以及有助于改善性能的软件设计思想。第3章从代码层面介绍了如何编写高性能的Java代码。涉及的主要内容有:字符串的优化处理、文件I/O的优化、核心数据库结构的使用、Java的引用类型以及一些常用的惯例。第4章介绍了并行程序开发的相关内容,以及如何通过多线程提高系统性能。先后介绍了并发设计模式、线程池、并发数据结构的使用、并发控制方法、“锁”的优化、无锁的使用以及协程。第5章立足于JVM虚拟机层面,介绍了如何通过设置合理的JVM参数提升Java程序的性能。第6章为工具篇,主要介绍了获取和监控程序或系统性能指标的各种工具,以及Java应用程序相关的故障排查工具。本书特点本书的主要特点有:· 专注于介绍Java应用程序的优化方法、技巧和思想,并深度剖析JDK的部分实现。· 具有较强的层次性和连贯性,依次介绍了在软件设计层面、代码层面、JVM虚拟机层面的优化方法。· 理论结合实际,使用丰富的示例帮助读者理解理论知识。阅读人群要通读本书并取得良好的学习效果,要求读者需要具备Java的基本知识。本书不是一本帮助初学者入门的书籍。因此,本书适合以下读者:· 拥有一定开发经验的Java开发人员· Java软件设计师、架构师· 系统调优人员· 有一定的Java基础并希望更进一步的程序员本书的约定本书在叙述过程中,有如下约定:· 本书中所述的JDK 1.5、JDK 1.6等同于JDK 5、JDK 6。· 如无特殊说明,JVM虚拟机均指Hot Spot虚拟机。· 如无特殊说明,本书的程序、示例均在JDK 1.6环境中运行。下载提示本书涉及的源程序请读者直接登录清华大学出版社网站,搜索到本书页面后按照提示进行下载。感谢在本书的写作过程中,我充满着感激之情。首先是对我的家人,在本书完稿前,父亲病重,但我由于工作上的繁忙未能抽出太多时间照顾他,幸好得到了母亲的大力支持和父亲的谅解,我才能够鼓足勇气,全身心投入到写作之中。同时,母亲对我的悉心照料也让我更加能够专注到工作之中。同时,我要感谢我的工作单位UT斯达康以及两位前辈Rex Zhu和Tao Tao。正是他们在平时工作中对我的细心指导,才能让我有所进步和积累。而这一切,正是本书的基础。最后,再次感谢我的母亲,祝她身体健康。葛一鸣

内容概要

  
Java是目前应用最为广泛的软件开发平台,学习针对Java程序的优化方法有重要的现实意义。《Java程序性能优化:让你的Java程序更快、更稳定》以Java性能调优为主线,系统地阐述了与Java性能优化相关的知识与技巧。
  
《Java程序性能优化:让你的Java程序更快、更稳定》共6章,先后从软件设计、软件编码、JVM调优以及程序故障排斥等方面介绍针对Java程序的优化方法。第1章介绍性能的基本概念、定律、系统调优的过程和注意事项。第2章从设计层面介绍与性能相关的设计模式、组件。第3章从代码层面介绍如何编写高性能的Java程序。第4章介绍了并行开发和如何通过多线程提高系统性能。第5章立足于JVM虚拟机层面,介绍如何通过设置合理的JVM参数提升Java程序的性能。第6章为工具篇,介绍了获取和监控程序或系统性能指标的各种工具,包括相关的故障排查工具。
  
本书适合所有Java程序员、软件设计师、架构师以及软件开发爱好者,对于有一定经验的Java工程师,本书更能帮助他突破技术瓶颈,深入Java内核开发!

作者简介

  
葛一鸣,毕业于浙江工业大学,获得了计算机软件与理论专业硕士学位。取得了国家认证系统分析师职称、OCP(Oracle数据库认证专家)。现就职于UT斯达康通讯有限公司,从事Java软件开发。有多年的软件开发经验,参与开发过多个软件项目。熟悉Java、PHP、MySQL、Oracle等开发语言和数据库,对Java软件开发、性能优化、分布式软件有着浓厚的兴趣和深入的研究。在校期间曾经发表过多篇技术论文。

书籍目录

第1章 Java性能调优概述
1.1 性能概述
1.1.1 看懂程序的性能
1.1.2 性能的参考指标
1.1.3 木桶原理与性能瓶颈
1.1.4 Amdahl定律
1.2 性能调优的层次
1.2.1 设计调优
1.2.2 代码调优
1.2.3 JVM调优
1.2.4 数据库调优
1.2.5 操作系统调优
1.3 基本调优策略和手段
1.3.1 优化的一般步骤
1.3.2 系统优化注意事项
1.4 小结
第2章 设计优化
2.1 善用设计模式
2.1.1 单例模式
2.1.2 代理模式
2.1.3 享元模式
2.1.4 装饰者模式
2.1.5 观察者模式
2.1.6 Value Object模式
2.1.7 业务代理模式
2.2 常用优化组件和方法
2.2.1 缓冲(Buffer)
2.2.2 缓存(Cache)
2.2.3 对象复用——“池”
2.2.4 并行替代串行
2.2.5 负载均衡
2.2.6 时间换空间
2.2.7 空间换时间
2.3 小结
第3章 Java程序优化
3.1 字符串优化处理
3.1.1 String对象及其特点
3.1.2 subString()方法的内存泄漏
3.1.3 字符串分割和查找
3.1.4 StringBuffer和StringBuilder
3.2 核心数据结构
3.2.1 List接口
3.2.2 Map接口
3.2.3 Set接口
3.2.4 优化集合访问代码
3.2.5 RandomAccess接口
3.3 使用NIO提升性能
3.3.1 NIO的Buffer类族和Channel
3.3.2 Buffer的基本原理
3.3.3 Buffer的相关操作
3.3.4 MappedByteBuffer性能评估
3.3.5 直接内存访问
3.4 引用类型
3.4.1 强引用
3.4.2 软引用
3.4.3 弱引用
3.4.4 虚引用
3.4.5 WeakHashMap类及其实现
3.5 有助于改善性能的技巧
3.5.1 慎用异常
3.5.2 使用局部变量
3.5.3 位运算代替乘除法
3.5.4 替换switch
3.5.5 一维数组代替二维数组
3.5.6 提取表达式
3.5.7 展开循环
3.5.8 布尔运算代替位运算
3.5.9 使用arrayCopy ()
3.5.10 使用Buffer进行I/O操作
3.5.11 使用clone()代替new
3.5.12 静态方法替代实例方法
3.6 小结
第4章 并行程序开发及优化
4.1 并行程序设计模式
4.1.1 Future模式
4.1.2 Master-Worker模式
4.1.3 Guarded Suspension模式
4.1.4 不变模式
4.1.5 生产者-消费者模式
4.2 JDK多任务执行框架
4.2.1 无限制线程的缺陷
4.2.2 简单的线程池实现
4.2.3 Executor框架
4.2.4 自定义线程池
4.2.5 优化线程池大小
4.2.6 扩展ThreadPoolExecutor
4.3 JDK并发数据结构
4.3.1 并发List
4.3.2 并发Set
4.3.3 并发Map
4.3.4 并发Queue
4.3.5 并发Deque
4.4 并发控制方法
4.4.1 Java内存模型与volatile
4.4.2 同步关键字synchronized
4.4.3 ReentrantLock重入锁
4.4.4 ReadWriteLock读写锁
4.4.5 Condition对象
4.4.6 Semaphore信号量
4.4.7 ThreadLocal线程局部变量
4.5 “锁”的性能和优化
4.5.1 线程的开销
4.5.2 避免死锁
4.5.3 减小锁持有时间
4.5.4 减小锁粒度
4.5.5 读写分离锁来替换独占锁
4.5.6 锁分离
4.5.7 重入锁ReentrantLock和内部锁synchronized
4.5.8 锁粗化(Lock Coarsening)
4.5.9 自旋锁(Spinning Lock)
4.5.10 锁消除(Lock Elimination)
4.5.11 锁偏向(Biased Lock)
4.6 无锁的并行计算
4.6.1 非阻塞的同步/无锁
4.6.2 原子操作
4.6.3 Amino框架介绍
4.6.4 Amino集合
4.6.5 Amino树
4.6.6 Amino图
4.6.7 Amino简单调度模式
4.7 协程
4.7.1 协程的概念
4.7.2 Kilim框架简介
4.7.3 Task及其状态
4.7.4 Fiber及其状态
4.7.5 Kilim开发环境配置
4.7.6 Kilim之Hello World
4.7.7 多任务通信
4.7.8 Kilim实例及性能评估
4.8 小结
第5章 JVM调优
5.1 Java虚拟机内存模型
5.1.1 程序计数器
5.1.2 Java虚拟机栈
5.1.3 本地方法栈
5.1.4 Java堆
5.1.5 方法区
5.2 JVM内存分配参数
5.2.1 设置最大堆内存
5.2.2 设置最小堆内存
5.2.3 设置新生代
5.2.4 设置持久代
5.2.5 设置线程桟
5.2.6 堆的比例分配
5.2.7 堆分配参数总结
5.3 垃圾收集基础
5.3.1 垃圾收集的作用
5.3.2 垃圾回收算法与思想
5.3.3 垃圾收集器的类型
5.3.4 评价GC策略的指标
5.3.5 新生代串行收集器
5.3.6 老年代串行收集器
5.3.7 并行收集器
5.3.8 新生代并行回收(Parallel Scavenge)收集器
5.3.9 老年代并行回收收集器
5.3.10 CMS收集器
5.3.11 G1收集器(Garbage First)
5.3.12 Stop the World案例
5.3.13 收集器对系统性能的影响
5.3.14 GC相关参数总结
5.4 常用调优案例和方法
5.4.1 将新对象预留在新生代
5.4.2 大对象进入老年代
5.4.3 设置对象进入老年代的年龄
5.4.4 稳定与震荡的堆大小
5.4.5 吞吐量优先案例
5.4.6 使用大页案例
5.4.7 降低停顿案例
5.5 实用JVM参数
5.5.1 JIT编译参数
5.5.2 堆快照(堆Dump)
5.5.3 错误处理
5.5.4 取得GC信息
5.5.5 类和对象跟踪
5.5.6 控制GC
5.5.7 选择类校验器
5.5.8 Solaris下线程控制
5.5.9 使用大页
5.5.10 压缩指针
5.6 实战JVM调优
5.6.1 Tomcat简介与启动加速
5.6.2 Web应用程序介绍
5.6.3 JMeter介绍与使用
5.6.4 调优前Web应用运行状况
5.6.5 调优过程
5.7 总结
第6章 Java性能调优工具
6.1 Linux命令行工具
6.1.1 top命令
6.1.2 sar命令
6.1.3 vmstat命令
6.1.4 iostat命令
6.1.5 pidstat工具
6.2 Windows工具
6.2.1 任务管理器
6.2.2 perfmon性能监控工具
6.2.3 Process Explorer
6.2.4 pslist命令行
6.3 JDK命令行工具
6.3.1 jps命令
6.3.2 jstat命令
6.3.3 jinfo命令
6.3.4 jmap命令
6.3.5 jhat命令
6.3.6 jstack命令
6.3.7 jstatd命令
6.3.8 hprof工具
6.4 JConsole工具
6.4.1 JConsole连接Java程序
6.4.2 Java程序概况
6.4.3 内存监控
6.4.4 线程监控
6.4.5 类加载情况
6.4.6 虚拟机信息
6.4.7 MBean管理
6.4.8 使用插件
6.5 Visual VM多合一工具
6.5.1 Visual VM连接应用程序
6.5.2 监控应用程序概况
6.5.3 Thread Dump和分析
6.5.4 性能分析
6.5.5 快照
6.5.6 内存快照分析
6.5.7 MBean管理
6.5.8 TDA使用
6.5.9 BTrace介绍
6.6 Visual VM对OQL的支持
6.6.1 Visual VM的OQL基本语法
6.6.2 内置heap对象
6.6.3 对象函数
6.6.4 集合/统计函数
6.6.5 程序化OQL
6.7 MAT内存分析工具
6.7.1 初识MAT
6.7.2 浅堆和深堆
6.7.3 支配树(Dominator Tree)
6.7.4 垃圾回收根
6.7.5 内存泄露检测
6.7.6 最大对象报告
6.7.7 查找支配者
6.7.8 线程分析
6.7.9 集合使用情况分析
6.7.10 扩展MAT
6.8 MAT对OQL的支持
6.8.1 Select子句
6.8.2 From子句
6.8.3 Where子句
6.8.4 内置对象与方法
6.9 JProfile简介
6.9.1 JProfile使用配置
6.9.2 内存视图
6.9.3 堆快照
6.9.4 CPU视图
6.9.5 线程视图
6.9.6 JVM统计信息
6.9.7 触发器
6.10 小结

编辑推荐

一个优秀的程序员,不仅要会编写程序,更要会编写高质量的程序感受Java开发中的大智慧,让你的Java程序更优美专注于Java应用程序的优化方法、技巧和思想深入剖析软件设计层面、代码层面、JVM虚拟机层面的优化方法理论结合实际,使用丰富的示例帮助读者理解理论知识

图书封面

图书标签Tags

评论、评分、阅读与下载


    Java程序性能优化 PDF格式下载


用户评论 (总计111条)

 
 

  •   本书从性能的角度讲解从软件设计、软件编码、JVM调优以及程序故障排除等方面介绍针对Java程序的优化方法。
  •   Java程序性能优化——让你的Java程序更快、更稳定,好好看,会有很好的成果的。
  •   Java程序性能优化——让你的Java程序更快、更稳定
  •   Java程序性能优化是一本好书,值得一看。
  •   作为java程序开发者,如果只知道写流水一样的代码,那么你永远成为不了大牛。优化!!!每个程序员都必须重视优化,从这本书里,我学到了很多以前不知道的优化方法,真的受益匪浅呀!!
  •   听说是本不错的书,性能优化对于java编程来说还是挺重要的,希望有所帮助吧!
  •   让你的Java程序更快、更稳定
  •   这本书写的不错,多于java代码性能提升有帮助,正在学习中。
  •   会与Java程序还不行,还要写出高性能的程序。
  •   非常好的一本书,有很多东西《effectivejava》(第二版)都没讲到,而且各个都跟着许多代码讲解!而且非常切合实际的开发!不敢想象这是一个不怎么有名气的国人葛一鸣写的,分析的很透彻,结合《java编程思想》(第四版)和《java技术核心卷一》很不错!本人单从书考虑,不论人(美国人,中国人,很多人就从心里贬低国人的作品,再加上清华出版社),觉得比《effectivejava》要好,因为介绍的非常全面,仔细!
  •   接触java时间不短了总感觉写出的程序不太理想就买了这本书,,,,
  •   不错,对于java程序来说是不错的建议。
  •   对于已经很熟悉Java的程序员来说很有帮助
  •   适合java中级开发人员,对效率的追求
  •   帮同事买的,对于提高java代码的效率很有用处
  •   java程序员经典资料书,讲解很详细,很全面!
  •   是Java学习得必备之书
  •   是我最近看过算不错从底层讲解java的书
  •   本书可以提高你对程序的优化
  •   研究较为深入,还不错啦。不过有时候觉得如果程序要考虑那么多,那就烦死了~~!!!
  •   调优从三个角度,设计、代码、系统。写的非常不错。遗憾的是书还没看完就丢了。
  •   做了程序员这么久了,真不知道这些优化方法,对我很实用,很好。
  •   基础是核心,加深对概念的理解,实现优化
  •   感觉还行,理论层面的
  •   对普通开发人员的提高很有帮助
  •   对于一个想要提高自我能力的程序员很有帮助!
  •   给开发工作提供了帮助
  •   非常好,合适初中级开发人员往上提升
  •   看完前两章,非常赞的一本书,讲的东西很实用也很深入
  •   书刚到,还没有开始看,对于关注代码质量的应该值得一看
  •   这本书还可以,值得一读,能系统地提高自己的能力。
  •   买回来第一天我就看了一大半,书中有很多关于作者多年一来的经验还有很多新的知识在里面,非常不错,喜欢这样的书和这样的写作风格!支持一个
  •   讲的浅显易懂、但是不够深入、全当是长见识用、还行
  •   学到了很多新技巧。。新知识
  •   工程师说不错
  •   很不错的一本书,值得好好的去阅读一番,能提高自己不少的能力。
  •   快递速度可以,书的纸张质量也不错,总体满意。
  •   很不错的书了,里面的知识能帮到我
  •   在北六环,送货速度比较快,书的性价比很高
  •   内容不错,比较适合阿里系的人看
  •   学习中~~很好的书
  •   很好,如果能结合页游来说,那就达到完美效果
  •   书看起来还不错!给商家顶一个
  •   受益颇深,值得看的一本书
  •   朋友推荐的,还不错。是初学者的比本书籍
  •   这本书很不错值得购买
  •   非常喜欢这本书,讲的很细,是我需要的
  •   感觉写的很不错,里面有很多平时遇到的但是不知道怎么解决的问题都提及到了,虽然我还没有详细看,但是感觉这本书买的还是挺值的。
  •   内容挺有用的,平时工作中可以借鉴
  •   就是快递送的时间有点晚了~都快晚上十点了!还好同事帮忙签收
  •   这本确实是不错,值得一看。
  •   这书还可以这书还可以
  •   挺不错的,挺实用的,推荐
  •   一本不错的书,主题很明确,
  •   寻觅已久的好书啊,终于等到了。
  •   很高深啊。只认识字。不知道在说什么。文科看不懂。
  •   很好,很经典。需要细细研读
  •   这个书真的很好啊这个书真的很好啊
  •   书挺好的,推荐下
  •   讲的还是蛮好的,比较实用。
  •   书还没有看,发货速度很快哦
  •   不错,还打折,很划算。上午下的单下午就到了,很快。
  •   快递很给力,书籍也很新!
  •   书很好,看了之后受益匪浅啊
  •   书籍内容好,送货速度快!
  •   very good,可以学到很多东西
  •   书内容不错,值得买来阅读~!
  •   刚到手。还没有看
  •   帮朋友买的不清楚
  •   帮老公买的。老公说这是经典的书。
  •   简单看了目录,正是想了解的,详细的有待进一步研读。
  •   很详细,不错,推荐
  •   书还是不错的,比较好懂~
  •   刚拿到,还未读,应该会不错
  •   翻了翻目录,不错
  •   书的内容不在多少,只要有一条对自己有用就够了
  •   讲的不错,学了不少东西。
  •   第一页就有错别字!
  •   还没有读,不过在图书馆看过,感觉还可以.
  •   没开始读呢,不知怎样
  •   书是好书,不过下了订单之后显示当天就能送到,结果第二天才送到的。
  •   写的不错。值得一看
  •   老公要用的,所以才买的,听老公说挺好的~
  •   真的不错哦,书都挺新的。
  •   还行吧!物流挺快
  •   书很好。内容非常实用。
  •   不错 看看 之前就想买了
  •   还没看,看后再评价。。
  •   对分析java程序性能很有帮助
  •   作为JAVA程序员,性能优化是必修课。
  •   作者通过简单易懂的例子,介绍如何驾驭Java如何解决性能问题,是一本好书。
  •   java程序员必备java程序员必备java程序员必备java程序员必备
  •   对我正在学习java有很大的帮助
  •   漫长的java之旅多了一件事
  •   很不错的一本书,看了对性能的优化有一定的思路,不再像以前一样没有连贯的理论了。
  •   从某个专题讲开,介绍相关的知识,这样的组织很不错。设计模式那块,从性能方法来谈为什么用模式,很有感悟。
  •   这本书梳理了一些实用,常用的优化技巧。可当做基础只是的整理。内容不是非常深。
  •   收到这本书后大致看了一下里面的内容,总体感觉还不错,书的纸张也还好,里面的内容也很实用,适合有一定开发经验又急于提高自己实战技术的开发人员,总体感觉还不错,就是下单后发货速度有些落后了!
  •   内容挺广的,但是不够深入。总得来说还可以,四星吧。
  •   图示质量不错,正在阅读,很有指导意义,赞一个!
 

250万本中文图书简介、评论、评分,PDF格式免费下载。 第一图书网 手机版

京ICP备13047387号-7