深化了解Java虚构机的目录 (深化了解并实施智慧应急战略)
本文目录导航:
深化了解Java虚构机的目录
前言致谢第一部分 走近Java第1章 走近Java / 21.1 概述 / 21.2 Java技术体系 / 31.3 Java开展史 / 51.4 展望Java技术的未来 / 91.4.1 模块化 / 91.4.2 混合言语 / 91.4.3 多核并行 / 111.4.4 进一步丰盛语法 / 121.4.5 64位虚构机 / 131.5 实战:自己编译JDK / 131.5.1 失掉JDK源码 / 131.5.2 系统需求 / 141.5.3 构建编译环境 / 151.5.4 预备依赖项 / 171.5.5 启动编译 / 181.6 本章小结 / 21第二部分 智能内存治理机制第2章 Java内存区域与内存溢出意外 / 242.1 概述 / 242.2 运转时数据区域 / 252.2.1 程序计数器 / 252.2.2 Java虚构机栈 / 262.2.3 本地方法栈 / 272.2.4 Java堆 / 272.2.5 方法区 / 282.2.6 运转时常量池 / 292.2.7 间接内存 / 292.3 对象访问 / 302.4 实战:OutOfMemoryError意外 / 322.4.1 Java堆溢出 / 322.4.2 虚构机栈和本地方法栈溢出 / 352.4.3 运转时常量池溢出 / 382.4.4 方法区溢出 / 392.4.5 本机间接内存溢出 / 412.5 本章小结 / 42第3章 渣滓搜集器与内存调配战略 / 433.1 概述 / 433.2 对象已死? / 443.2.1 援用计数算法 / 443.2.2 根搜查算法 / 463.2.3 再谈援用 / 473.2.4 生活还是死亡? / 483.2.5 回收方法区 / 503.3 渣滓搜集算法 / 513.3.1 标志 -肃清算法 / 513.3.2 复制算法 / 523.3.3 标志-整顿算法 / 543.3.4 分代搜集算法 / 543.4 渣滓搜集器 / 553.4.1 Serial搜集器 / 563.4.2 ParNew搜集器 / 573.4.3 Parallel Scavenge搜集器 / 593.4.4 Serial Old搜集器 / 603.4.5 Parallel Old搜集器 / 613.4.6 CMS搜集器 / 613.4.7 G1搜集器 / 643.4.8 渣滓搜集器参数总结 / 643.5 内存调配与回收战略 / 653.5.1 对象优先在Eden调配 / 663.5.2 大对象间接进入老年代 / 683.5.3 常年存活的对象将进入老年代 / 693.5.4 灵活对象年龄判定 / 713.5.5 空间调配担保 / 733.6 本章小结 / 75第4章 虚构机性能监控与缺点解决工具 / 764.1 概述 / 764.2 JDK的命令行工具 / 764.2.1 jps:虚构机进程状况工具 / 794.2.2 jstat:虚构机统计消息监督工具 / 804.2.3 jinfo:Java性能消息工具 / 824.2.4 jmap:Java内存映像工具 / 824.2.5 jhat:虚构机堆转储快照剖析工具 / 844.2.6 jstack:Java堆栈跟踪工具 / 854.3 JDK的可视化工具 / 874.3.1 JConsole:Java监督与治理控制台 / 884.3.2 VisualVM:多合一缺点解决工具 / 964.4 本章小结 / 105第5章 调优案例剖析与实战 / 1065.1 概述 / 1065.2 案例剖析 / 1065.2.1 高性能配件上的程序部署战略 / 1065.2.2 集群间同步造成的内存溢出 / 1095.2.3 堆外内存造成的溢出失误 / 1105.2.4 外部命令造成系统缓慢 / 1125.2.5 主机JVM进程解体 / 1135.3 实战:Eclipse运转速度调优 / 1145.3.1 调优前的程序运转形态 / 1145.3.2 更新JDK 1.6的性能变动及兼容疑问 / 1175.3.3 编译期间和类加载期间的提升 / 1225.3.4 调整内存设置控制渣滓搜集频率 / 1265.3.5 选用搜集器降落提前 / 1305.4 本章小结 / 133第三部分 虚构机口头子系统第6章 类文件结构 / 1366.1 概述 / 1366.2 有关性的基石 / 1366.3 Class类文件的结构 / 1386.3.1 魔数与Class文件的版本 / 1396.3.2 常量池 / 1416.3.3 访问标志 / 1476.3.4 类索引、父类索引与接口索引汇合 / 1486.3.5 字段表汇合 / 1496.3.6 方法表汇合 / 1536.3.7 属性表汇合 / 1556.4 Class文件结构的开展 / 1686.5 本章小结 / 170第7章 虚构机类加载机制 / 1717.1 概述 / 1717.2 类加载的机遇 / 1727.3 类加载的环节 / 1767.3.1 加载 / 1767.3.2 验证 / 1787.3.3 预备 / 1817.3.4 解析 / 1827.3.5 初始化 / 1867.4 类加载器 / 1897.4.1 类与类加载器 / 1897.4.2 双亲委派模型 / 1917.4.3 破坏双亲委派模型 / 1947.5 本章小结 / 197第8章 虚构机字节码口头引擎 / 1988.1 概述 / 1988.2 运转时栈帧结构 / 1998.2.1 部分变量表 / 1998.2.2 操作数栈 / 2048.2.3 灵活衔接 / 2068.2.4 方法前往地址 / 2068.2.5 附加消息 / 2078.3 方法调用 / 2078.3.1 解析 / 2078.3.2 分派 / 2098.4 基于栈的字节码解释口头引擎 / 2218.4.1 解释口头 / 2218.4.2 基于栈的指令集与基于寄存器的指令集 / 2238.4.3 基于栈的解释器口头环节 / 2248.5 本章小结 / 230第9章 类加载及口头子系统的案例与实战 / 2319.1 概述 / 2319.2 案例剖析 / 2319.2.1 Tomcat:正统的类加载器架构 / 2329.2.2 OSGi:灵敏的类加载器架构 / 2359.2.3 字节码生成技术与灵活代理的成功 / 2389.2.4 Retrotranslator:超过JDK版本 / 2429.3 实战:自己入手成功远程口头性能 / 2469.3.1 指标 / 2469.3.2 思绪 / 2479.3.3 成功 / 2489.3.4 验证 / 2559.4 本章小结 / 256第四部分 程序编译与代码提升第10章 早期(编译期)提升 / .1 概述 / .2 Javac编译器 / .2.1 Javac的源码与调试 / .2.2 解析与填充符号表 / .2.3 注解解决器 / .2.4 语义剖析与字节码生成 / .3 Java语法糖的滋味 / .3.1 泛型与类型擦除 / .3.2 智能装箱、拆箱与遍历循环 / .3.3 条件编译 / .4 实战:拔出式注解解决器 / .4.1 实战指标 / .4.2 代码成功 / .4.3 运转与测试 / .4.4 其余运行案例 / .5 本章小结 / 286第11章 早期(运转期)提升 / .1 概述 / .2 HotSpot虚构机内的即时编译器 / .2.1 解释器与编译器 / .2.2 编译对象与触发条件 / .2.3 编译环节 / .2.4 检查与剖析即时编译结果 / .3 编译提升技术 / .3.1 提升技术概览 / .3.2 公共子表白式消弭 / .3.3 数组边界审核消弭 / .3.4 方法内联 / .3.5 逃逸剖析 / .4 Java与C/C++的编译器对比 / .5 本章小结 / 313第五部分 高效并发第12章 Java内存模型与线程 / .1 概述 / .2 配件的效率与分歧性 / .3 Java内存模型 / .3.1 主内存与上班内存 / .3.2 内存间交互操作 / .3.3 关于volatile型变量的不凡规则 / .3.4 关于long和double型变量的不凡规则 / .3.5 原子性、可见性与有序性 / .3.6 后行出现准则 / .4 Java与线程 / .4.1 线程的成功 / .4.2 Java线程调度 / .4.3 形态转换 / .5 本章小结 / 341第13章 线程安保与锁提升 / .1 概述 / .2 线程安保 / .2.1 Java言语中的线程安保 / .2.2 线程安保的成功方法 / .3 锁提升 / .3.1 自旋锁与自顺应自旋 / .3.2 锁消弭 / .3.3 锁粗化 / .3.4 轻量级锁 / .3.5 倾向锁 / .4 本章小结 / 362附录A Java虚构机家族 / 363附录B 虚构机字节码指令表 / 366附录C HotSpot虚构机关键参数表 / 372附录D 对象查问言语(OQL)简介 / 376附录E JDK历史版本轨迹 / 383
深化了解Java虚构机:JVM初级个性与最佳通常的内容简介
作为一位java程序员,你能否也曾经想深化了解java虚构机,然而却被它的复杂和深奥拒之门外?没相关,《深化了解java虚构机:jvm初级个性与最佳通常》极尽化繁为简之妙,能率领你在轻松中领略java虚构机的微妙。
《深化了解java虚构机:jvm初级个性与最佳通常》是近年来国际出版的惟逐一本与java虚构机相关的专著,也是惟逐一本同时从外围思论和实践运用这两个角度去讨论java虚构机的著述,不只通常剖析得透彻,而且书中蕴含的典型案例和最佳通常也极具事实指点意义。
全书共分为五大部分。
第一部分从微观的角度引见了整个java技术体系的过去、如今和未来,以及如何独立地编译一个openjdk7,这对了解前面的内容很有协助。
第二部合成说了jvm的智能内存治理,包括虚构机内存区域的划分原理以及各种内存溢出意外发生的要素;经常出现的渣滓搜集算法以及渣滓搜集器的特点和上班原理;经常出现的虚构机的监控与调试工具的原理和经常使用方法。
第三部分剖析了虚构机的口头子系统,包括class的文件结构以及如何存储和访问class中的数据;虚构机的类创立机制以及类加载器的上班原理和它对虚构机的意义;虚构机字节码的口头引擎以及它在履行代码时触及的内存结构。
第四部合成说了程序的编译与代码的提升,论述了泛型、智能装箱拆箱、条件编译等语法糖的原理;解说了虚构机的热点探测方法、hotspot的即时编译器、编译触发条件,以及如何从虚构机外部观察和剖析jit编译的数据和结果。
第五部分讨论了java成功高效并发的原理,包括jvm内存模型的结构和操作;原子性、可见性和有序性在java内存模型中的表现;后行出现准则的规则和经常使用;线程在java言语中的成功原理;虚构机成功高效并发所做的一系列锁提升措施。
《深化了解java虚构机:jvm初级个性与最佳通常》适宜一切java程序员、系统调优师和系统架构师浏览。
JAVA虚构机是什么意思?
Java虚构机(Java Virtual Machine,简称JVM)是一种假想的计算机。
从结构上看,它由形象的指令集、寄存器组、类文件格局规则、堆栈、内存渣滓搜集器和存储区六个部件组成。
指令集驳回与平合有关的字节码方式,寄存器组中蕴含程序计数器、堆栈指针、运转环境指针和变量指针,类文件也与平台有关,堆栈用来传递参数和前往运转结果,渣滓搜集器搜集不再经常使用的内存片段,存储区则用来寄存字节码。
JVM仅仅规则部件的性能和规格。
只管这些性能和规格是一致的,然而并没有规则这此部件的详细成功技术,就是说,可以用任何一种技术来成功。
Java中引入了虚构机的概念,即在机器和编译程序之间添加了一层形象的虚构的机器。
这台虚构的机器在任何平台上都提供应编译程序一个的独特的接口。
编译程序只有要面向虚构机,生成虚构机能够了解的代码,而后由解释器来将虚构机代码转换为特定系统的机器码口头。
在Java中,这种供虚构机了解的代码叫做字节码(ByteCode),它不面向任何特定的解决器,只面向虚构机。
每一种平台的解释器是不同的,然而成功的虚构机是相反的。
Java源程序通过编译器编译后变成字节码,字节码由虚构机解释口头,虚构机将每一条要口头的字节码送给解释器,解释器将其翻译成特定机器上的机器码,而后在特定的机器上运转。
可以说,Java虚构机是Java言语的基础。
它是Java技术的关键组成部分。
Java虚构机是一个形象的计算机,和实践的计算机一样,它具备一个指令集并经常使用不同的存储区域。
它担任口头指令,还要治理数据、内存和寄存器。
Java解释器担任将字节代码翻译成特定机器的机器代码。
Java是一种便捷的言语。
它用到的概念不多,而且多为程序员所相熟。
假设你是一名程序员,把握Java对你来说是大海捞针的事。
即使你没有学过任何编程言语,学习Java也要比学习C++要容易的多。