当前位置:首页 > 工业技术
解析Java虚拟机开发  权衡优化、高效和安全的最优方案
解析Java虚拟机开发  权衡优化、高效和安全的最优方案

解析Java虚拟机开发 权衡优化、高效和安全的最优方案PDF电子书下载

工业技术

  • 电子书积分:15 积分如何计算积分?
  • 作 者:张善香编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2013
  • ISBN:9787302314943
  • 页数:485 页
图书介绍:本书共17章分别讲解了Java相关知识,平台无关性、安全性、网络移动性相关知识,Java虚拟机相关知识,Java class,栈和局部变量,分析基本语法的内理,Java内存区域与内存溢出异常,垃圾收集器,内存分配与回收策略,企业级性能监控工具和优化部署,虚拟机类加载机制,虚拟机字节码执行引擎编译优化和运行优化,Java内存模型与线程,线程安全与锁优化等相关知识。
《解析Java虚拟机开发 权衡优化、高效和安全的最优方案》目录

第1章 一起走进Java世界 1

1.1 Java的优势 2

1.1.1排名第一的编程语言 2

1.1.2提供给我们美好的就业前景 2

1.2学习Java需要了解的那些事 3

1.2.1品Java语言的发展历史 3

1.2.2 Java的特点 4

1.3剖析Java的运行机制 5

1.3.1高级语言的运行机制 5

1.3.2 Java的运行机制 5

1.3.3 Java虚拟机——JVM 7

1.3.4独特的垃圾回收机制 8

1.4剖析Java语言体系 9

1.4.1 Java程序员的6个级别 9

1.4.2分析Java体系的构成 11

1.5 Java虚拟机家族 12

1.5.1虚拟机的用途 12

1.5.2理解Java虚拟机 12

1.5.3 Java虚拟机的数据类型 13

1.5.4 Java虚拟机体系结构 14

1.5.5探索Java虚拟机家族成员的发展史 16

1.6 Java的最大优势——平台无关性 19

1.6.1平台无关性的好处 21

1.6.2 Java对平台无关性的支持 22

1.6.3分析影响Java平台无关性的因素 24

1.6.4实现平台无关性的策略 27

第2章 JDK编译测试 29

2.1为什么要编译JDK 30

2.2在Windows平台编译JDK 30

2.2.1为什么选择OpenJDK 30

2.2.2获取JDK源码 30

2.2.3系统需求 31

2.2.4构建编译环境 32

2.2.5准备依赖项 43

2.2.6开始编译 45

2.3在Linux平台编译JDK 47

第3章 安全性的考虑 53

3.1为什么需要安全性 54

3.2沙箱模型的4种组件 55

3.2.1沙箱模型介绍 55

3.2.2类加载体系结构 55

3.2.3 class文件检验器 60

3.2.4内置于Java虚拟机(及语言)的安全特性 64

3.2.5安全管理器和Java API 66

3.3浅谈安全管理器的必要性 68

3.3.1公正评论安全管理器优点和弱点 68

3.3.2方法check 69

3.4代码签名和认证 71

3.4.1代码签名和密钥 71

3.4.2代码签名示例 73

3.5策略机制和保护域 75

3.5.1分析Java的策略机制 76

3.5.2分析策略文件 77

3.5.3保护域 79

3.6访问控制器 79

3.6.1 implies()方法 80

3.6.2栈检查演示实例 82

第4章 通过网络实现移动性 85

4.1为什么需要网络移动性 86

4.2网络对软件的影响 87

4.2.1什么是网络 87

4.2.2计算机网络的发展历史 88

4.2.3网络应用形成了一种新的软件模式 88

4.3 Java体系对网络的支持 90

4.3.1对网络安全的支持 90

4.3.2网络移动性 95

4.4 applet演示 97

4.5 JINI服务对象 98

4.5.1 Java推出JIM的背景 98

4.5.2 什么是JIM 99

4.5.3为什么需要JINI 100

4.5.4 JINI的工作过程 101

4.5.5服务对象的优点 104

4.5.6 JINI技术的运作 106

4.5.7如何启动JINI 107

第5章 浅谈Java虚拟机的内部机制 111

5.1什么是虚拟机 112

5.1.1 JVM简介 112

5.1.2 JVM的组成部分 112

5.2 Java虚拟机的生命周期 113

5.3 Java虚拟机的体系结构 114

5.3.1数据类型 117

5.3.2“字” 119

5.3.3类装载器子系统 119

5.3.4方法区 121

5.3.5堆 125

5.3.6程序计数器 130

5.3.7 Java栈 130

5.3.8栈帧 130

5.3.9本地方法栈 134

5.3.10执行引擎 135

5.3.11本地方法接口 143

5.4 Java对象池技术的原理及其实现 144

5.4.1对象池技术的基本原理 145

5.4.2通用对象池的实现 146

5.4.3专用对象池的实现 148

第6章 详解Class文件 149

6.1 Class介绍 150

6.2 Java Class文件的格式 151

6.3常量池的具体结构 155

6.4特殊字符串 162

6.4.1全限定名 162

6.4.2简单名称 162

6.4.3描述符 162

6.5常量池 163

6.5.1 OCNSTANT Utf8 info表 163

6.5.2 CONSTANT Integer info表 165

6.5.3 CONSTANT Float info表 165

6.5.4 CONSTANT Long info表 165

6.5.5 CONSTANT Double info表 166

6.5.6 CONSTANT Class info表 166

6.5.7 CONSTANT String info表 167

6.5.8 CONSTANT Fieldref info表 167

6.5.9 CONSTANT Melhodref info表 168

6.5.10 CONSTANT InterfaceMethodref info表 168

6.5.11 CONSTANT NameAndType-info表 169

6.6字段 169

6.7方法 170

6.8属性 171

6.8.1属性格式 171

6.8.2 Code属性 172

6.8.3 ConstantValue属性 173

6.8.4 Deprecated属性 173

6.8.5 Exception属性 173

6.8.6 InnerClasses属性 174

6.9 JVM加载Class文件的原理 174

6.9.1 Java中的类文件 174

6.9.2 JVM加载Class文件 176

第7章 栈和局部变量操作 179

7.1类型装载、连接和初始化 180

7.1.1装载 181

7.1.2验证 182

7.1.3准备 184

7.1.4解析 184

7.1.5初始化 184

7.2对象的生命周期 185

7.3卸载类型 189

7.3.1卸载类型基础 189

7.3.2 unreachable状态的作用 189

7.3.3类型更新 193

7.4常量入栈操作 195

第8章 内存异常和垃圾处理 205

8.1 Java的内存分配管理 206

8.1.1内存分配中的栈和堆 206

8.1.2堆和栈的合作 209

8.2运行时的数据区域 213

8.2.1程序计数器(Program Counter Register) 213

8.2.2 Java的虚拟机栈VM Stack 214

8.2.3本地方法栈Native Method Stack 215

8.2.4 Java堆Java Heap 215

8.2.5方法区Method Area 216

8.2.6运行时常量池Runtime Constant Pool 217

8.2.7直接内存(Direct Memory) 217

8.3对象访问 218

8.3.1对象访问基础 218

8.3.2具体测试 220

8.4内存泄露 227

8.4.1内存泄露的分类 227

8.4.2内存泄露的定义 227

8.4.3内存泄露的常见问题和后果 228

8.4.4检测内存泄露 229

8.5垃圾收集初探 230

8.5.1何谓垃圾收集 230

8.5.2常见的垃圾收集策略 230

8.5.3 JVM的垃圾收集策略 232

8.6对象的生死 233

8.6.1引用计数算法(Reference Counting) 234

8.6.2根搜索算法 235

8.6.3再谈引用 236

8.6.4生存还是死亡 236

8.6.5回收方法区 238

8.7垃圾收集算法 239

8.7.1标记-清除算法 239

8.7.2复制算法 240

8.7.3标记-整理算法 241

8.7.4分代收集算法 241

8.8垃圾收集器 242

8.8.1 Serial收集器 243

8.8.2 ParNew收集器 243

8.8.3 Parallel Scavenge收集器 244

8.8.4 Serial Old收集器 245

8.8.5 Parallel Old收集器 245

8.8.6 CMS收集器 246

8.8.7 G1收集器 247

8.8.8垃圾收集器参数总结 248

8.9内存分配与回收策略 249

8.9.1对象优先在Eden分配 249

8.9.2大对象直接进入老年代 251

8.9.3长期存活的对象将进入老年代 252

8.9.4动态对象年龄判定 253

8.9.5空间分配担保 254

第9章 高效手段之性能监控工具和优化部署 257

9.1 JDK的命令行工具 258

9.1.1 jps:虚拟机进程状况工具 260

9.1.2 jstat:虚拟机统计信息监视工具 261

9.1.3 jinfo: Java配置信息工具 266

9.1.4 jmap: Java内存映像工具 266

9.1.5 jhat:虚拟机堆转储快照分析工具 267

9.1.6 jstack: Java堆栈跟踪工具 268

9.2 JDK的可视化工具 269

9.2.1 JConsole: Java监视与管理控制台 269

9.2.2 VisuaIVM:多合一故障处理工具 275

第10章 JVM参数分析和调优实战 279

10.1捕鱼工具选择——JVM参数 280

10.1.1通用的JVM参数 280

10.1.2串行收集器参数 282

10.1.3并行收集器参数 282

10.1.4并发收集器参数 283

10.2测试调优 284

10.2.1测试环境准备 284

10.2.2录制测试脚本 285

10.2.3定义测试场景 285

10.2.4执行初步性能测试 286

10.2.5选择调优方案 286

10.2.6调优后JVM监控图 288

10.2.7测试结果分析 292

10.3性能问题举例 292

10.3.1查看监控结果 292

10.3.2原因分析 295

10.4调优案例分析 296

10.4.1高性能硬件上的程序部署策略 296

10.4.2堆外内存导致的溢出错误 298

10.4.3外部命令导致系统缓慢 299

10.4.4服务器JVM进程崩溃 299

10.5 Eclipse调优 300

10.5.1 Eclipse快捷键 300

10.5.2启动运行速度调优 302

10.5.3调优前的程序运行状态 303

第11章 虚拟机类的加载机制 307

11.1虚拟机类的加载 308

11.2类的加载过程 311

11.2.1加载 311

11.2.2验证 312

11.2.3准备 315

11.2.4解析 315

11.2.5初始化 318

11.3类加载器 321

11.3.1类加载器的基础知识 321

11.3.2 JVM启动时的三个类加载器 327

11.3.3双亲委派模型 334

11.3.4破坏双亲委派模型 335

11.3.5开发自己的类加载器 337

11.3.6类加载器与Web容器 339

11.3.7类加载器与OSGi 339

第12章 研究高效之魂 341

12.1虚拟机的字节码 342

12.2栈帧的结构 343

12.2.1什么是栈帧 344

12.2.2局部变量表 345

12.2.3操作数栈 348

12.2.4动态连接 349

12.2.5方法返回地址 349

12.2.6 附加信息 350

12.3方法调用 350

12.3.1方法调用的背景 350

12.3.2解析 352

12.3.3分派 353

12.4基于栈的字节码解释执行引擎 360

12.4.1解释执行 360

12.4.2基于栈的指令集与基于寄存器的指令集 361

12.4.3基于栈的解释器执行过程 362

第13章 类加载器和执行子系统 365

13.1分析Tomcat类加载器的架构 366

13.1.1 Tomcat目录结构 366

13.1.2定义公共类加载器 368

13.1.3初始化catalina守护程序 369

13.1.4 Tomcat内部初始化类加载器 370

13.2 OSGi的类加载器架构 375

13.3字节码生成技术 377

13.4动态代理 378

13.4.1代理模式 378

13.4.2相关的类和接口 379

13.4.3代理机制及其特点 380

13.4.4应用动态代理 382

第14章 编译优化 393

14.1 Java的编译过程 394

14.2 Java编译优化简介 395

14.3 Javac编译器 397

14.3.1 Javac命令详解 397

14.3.2 Javac源码与调试 400

14.3.3解析与填充符号表 401

14.3.4注解处理器 402

14.3.5语义分析与字节码生成 402

14.3.6 Javac编译实例 405

14.3.7 Javac的源码与调试 406

14.4 Java语法糖的味道 407

14.4.1泛型与类型擦除 407

14.4.2自动装箱、拆箱与遍历循环 410

14.4.3条件编译 411

14.5插入式注解处理器 413

14.5.1插入式注解处理API基础 413

14.5.2实战 416

第15章 运行期优化 423

15.1运行期优化简介 424

15.2 HotSpot虚拟机内的即时编译器 424

15.2.1 HotSpot虚拟机的背景 424

15.2.2解释器与编译器 427

15.2.3编译对象与触发条件 428

15.2.4编译过程 430

15.2.5查看与分析即时编译结果 431

15.3编译优化技术 433

15.3.1优化技术概览 433

15.3.2公共子表达式消除 436

15.3.3数组边界检查消除 437

15.3.4方法内联 437

15.3.5逃逸分析 439

15.4 Java与C/C++的编译器对比 440

第16章 内存模型和线程 443

16.1 Java的多线程 444

16.2硬件的效率与一致性 445

16.3 Java内存模型 446

16.3.1 Java内存模型概述 446

16.3.2主内存与工作内存 449

16.3.3内存间交互操作 449

16.3.4 volatile型变量 451

16.3.5 long和double型变量 457

16.3.6原子性、可见性与有序性 458

16.3.7先行发生原则 459

16.4线程 460

16.4.1线程的实现 460

16.4.2线程调度 462

16.4.3线程状态间的转换 463

第17章 安全和优化合二为一 469

17.1线程安全 470

17.1.1 Java中的线程安全 470

17.1.2线程安全的实现方法 473

17.1.3无状态类 478

17.2锁优化 480

17.2.1自旋锁与自适应自旋 480

17.2.2锁消除 481

17.2.3锁膨胀 482

17.2.4轻量级锁 482

17.2.5偏向锁 484

相关图书
作者其它书籍
返回顶部