图书介绍

解析Java虚拟机开发 权衡优化、高效和安全的最优方案【2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载】

解析Java虚拟机开发 权衡优化、高效和安全的最优方案
  • 张善香编著 著
  • 出版社: 北京:清华大学出版社
  • ISBN:9787302314943
  • 出版时间:2013
  • 标注页数:485页
  • 文件大小:243MB
  • 文件页数:496页
  • 主题词:JAVA语言-程序设计

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

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

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第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虚拟机——JVM7

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为什么要编译JDK30

2.2在Windows平台编译JDK30

2.2.1为什么选择OpenJDK30

2.2.2获取JDK源码30

2.2.3系统需求31

2.2.4构建编译环境32

2.2.5准备依赖项43

2.2.6开始编译45

2.3在Linux平台编译JDK47

第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 API66

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

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

3.3.2方法check69

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 什么是JIM99

4.5.3为什么需要JINI100

4.5.4 JINI的工作过程101

4.5.5服务对象的优点104

4.5.6 JINI技术的运作106

4.5.7如何启动JINI107

第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 Stack214

8.2.3本地方法栈Native Method Stack215

8.2.4 Java堆Java Heap215

8.2.5方法区Method Area216

8.2.6运行时常量池Runtime Constant Pool217

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类加载器与OSGi339

第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

热门推荐