最新公告
  • 欢迎您光临IO源码网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • 虚拟机设计与实现 以JVM为例 PDF 下载

    虚拟机设计与实现  以JVM为例 PDF 下载

    本站整理下载:
    版权归出版社和原作者所有,链接已删除,请购买正版
     
     
    用户下载说明:
    电子版仅供预览,下载后24小时内务必删除,支持正版,喜欢的请购买正版书籍:
    http://product.dangdang.com/28512998.html
      
    相关截图:

    资料简介:
    本书从一位虚拟机(VM)架构师的角度,以易于理解、层层深入的方式介绍了各种主题和算法,尤其是不同VM通用的主要技术。这些算法用图示充分解释,用便于理解的代码片段实现,使得这些抽象概念对系统软件工程师而言具像化并可编程。书中还包括一些同类文献中较少涉及的主题,例如运行时辅助、栈展开和本地接口。本书集理论性与实践性于一身,不仅结合了高层设计功能与底层实现,而且还结合了高级主题与商业解决方案,是VM设计和工程实践方面的理想参考读物

    资料目录:
    第 一部分 虚拟机基础

    第 1章 虚拟机简介 2

    1.1 虚拟机类型 2

    1.2 为什么需要虚拟机 3

    1.3 虚拟机示例 4

    1.3.1 JavaScript引擎 4

    1.3.2 Perl引擎 5

    1.3.3 Android Java VM 5

    1.3.4 Apache Harmony 6

    第 2章 虚拟机内部组成 7

    2.1 虚拟机核心组件 7

    2.1.1 加载器与动态链接器 7

    2.1.2 执行引擎 8

    2.1.3 内存管理器 8

    2.1.4 线程调度器 9

    2.1.5 语言扩展 9

    2.1.6 传统模型与虚拟机模型 10

    2.2 虚拟ISA 11

    2.2.1 JVM 12

    2.2.2 JVM与CLR 15

    第3章 虚拟机中的数据结构 17

    3.1 对象与类 17

    3.2 对象表示 18

    3.3 方法描述 18

    第二部分 虚拟机设计

    第4章 执行引擎设计 22

    4.1 解释器 22

    4.1.1 超级指令 23

    4.1.2 选择性内联 23

    4.2 JIT编译 23

    4.2.1 基于方法的JIT 24

    4.2.2 基于踪迹的JIT 26

    4.2.3 基于区域的JIT 29

    4.3 解释器与JIT编译器的关系 30

    4.4 AOT编译 31

    4.5 编译时与运行时 33

    第5章 垃圾回收设计 37

    5.1 对象生存期 37

    5.2 引用计数 38

    5.3 对象追踪 40

    5.4 RC与对象追踪 42

    5.5 GC安全点 43

    5.6 常用追踪GC算法 45

    5.6.1 标记清除 46

    5.6.2 追踪复制 46

    5.7 常用追踪GC变体 48

    5.7.1 标记压缩 48

    5.7.2 滑动压缩 48

    5.7.3 追踪转发 49

    5.7.4 标记复制 50

    5.7.5 分代式GC 50

    5.8 移动式GC与非移动式GC 53

    5.8.1 数据局部性 53

    5.8.2 跳增指针分配 53

    5.8.3 空闲列表与分配位图 53

    5.8.4 离散大小列表 54

    5.8.5 标记位与分配位 54

    5.8.6 线程局部分配 55

    5.8.7 移动式GC与非移动式GC的混合 56

    第6章 线程设计 58

    6.1 什么是线程 58

    6.2 内核线程与用户线程 59

    6.3 VM线程到OS线程的映射 61

    6.4 同步构件 63

    6.5 monitor 65

    6.5.1 互斥 65

    6.5.2 条件变量 66

    6.5.3 monitorenter 66

    6.5.4 monitorexit 69

    6.5.5 Object.wait() 71

    6.5.6 Object.notify() 71

    6.6 原子 73

    6.7 monitor与原子 75

    6.7.1 阻塞与非阻塞 75

    6.7.2 中央控制点 75

    6.7.3 锁与非锁 75

    6.7.4 非阻塞之上的阻塞 76

    6.8 回收器与修改器 77

    6.9 线程局部数据 78

    6.10 GC的线程暂停支持 81

    6.10.1 GC安全点 81

    6.10.2 GC安全区域 83

    6.10.3 基于锁的安全点 86

    6.10.4 回收中的线程交互 87

    第三部分 虚拟机内部支持

    第7章 本地接口 92

    7.1 为何需要本地接口 92

    7.2 从托管代码到本地代码的转换 93

    7.2.1 本地方法封装 94

    7.2.2 封装代码的GC支持 96

    7.2.3 封装代码的同步支持 98

    7.3 本地方法实现的绑定 99

    7.4 本地代码到托管代码的转换 99

    7.5 本地代码到本地代码的转换 102

    7.5.1 通过JNI API的本地到本地转换 102

    7.5.2 为什么在本地到本地转换中使用JNI API 105

    第8章 栈展开 107

    8.1 为何需要栈展开 107

    8.2 Java方法帧的栈展开 108

    8.2.1 栈展开设计 108

    8.2.2 栈展开实现 110

    8.3 本地方法帧的栈展开 112

    8.3.1 栈展开设计 112

    8.3.2 Java到本地封装设计 114

    8.3.3 栈展开实现 116

    8.3.4 本地帧与C帧 117

    第9章 垃圾回收支持 119

    9.1 为何需要垃圾回收支持 119

    9.2 在Java代码中支持垃圾回收 121

    9.2.1 GC-map 121

    9.2.2 带寄存器的栈展开 124

    9.3 在本地代码中支持垃圾回收 126

    9.3.1 对象引用访问 127

    9.3.2 对象句柄实现 129

    9.3.3 GC安全性维护 132

    9.3.4 对象体访问 133

    9.3.5 对象分配 135

    9.4 在同步方法中支持垃圾回收 136

    9.4.1 同步Java方法 136

    9.4.2 同步本地方法 138

    9.5 Java与本地代码转换中的GC支持 140

    9.5.1 本地到Java 140

    9.5.2 Java到本地 142

    9.5.3 本地到本地 142

    9.6 全局根集 144

    第 10章 运行时辅助 145

    10.1 为何需要运行时辅助 145

    10.2 带运行时辅助的VM服务设计 147

    10.2.1 运行时辅助操作 147

    10.2.2 运行时辅助实现 148

    10.2.3 JNI API作为运行时辅助 150

    10.3 没有运行时辅助的VM服务设计 151

    10.3.1 运行时辅助的快速路径 153

    10.3.2 快速路径VM服务编程 154

    10.4 主要VM服务 154

    第 11章 异常抛出 157

    11.1 保存异常抛出上下文 157

    11.1.1 VM保存的上下文 158

    11.1.2 Linux中OS保存的上下文 158

    11.1.3 Windows中OS保存的上下文 159

    11.1.4 同步与异步异常 160

    11.2 本地代码内与跨本地代码异常处理 161

    11.2.1 本地代码内的异常处理 161

    11.2.2 带异常Java代码返回到本地代码 162

    11.2.3 带异常的本地代码返回到Java代码 166

    11.3 保存栈轨迹 167

    11.4 找到异常处理器 169

    11.5 控制转移 172

    11.5.1 控制转移操作 172

    11.5.2 用于控制转移的寄存器 173

    11.5.3 数据寄存器恢复 174

    11.5.4 控制寄存器修正 176

    11.5.5 执行恢复 176

    11.5.6 未捕获异常 179

    第 12章 终结与弱引用 180

    12.1 终结 180

    12.2 为何需要弱引用 182

    12.3 对象生存期状态 184

    12.3.1 对象状态转换 185

    12.3.2 引用队列 187

    12.3.3 引用对象状态转换 187

    12.4 引用对象实现 189

    12.5 引用对象处理顺序 191

    第 13章 虚拟机模块化设计 194

    13.1 VM组件 194

    13.2 对象信息暴露 197

    13.3 垃圾回收器接口 199

    13.4 执行引擎接口 202

    13.5 跨组件优化 203

    第四部分 垃圾回收优化

    第 14章 针对吞吐量的GC优化 208

    14.1 部分堆回收与全堆回收之间的适应性调整 208

    14.2 分代式与非分代式算法之间的适应性调整 213

    14.3 堆的空间大小的适应性调整 217

    14.3.1 空间大小扩展 218

    14.3.2 NOS大小 219

    14.3.3 部分转发NOS设计 221

    14.3.4 半空间NOS设计 221

    14.3.5 aged-mature NOS设计 223

    14.3.6 回退回收 225

    14.4 分配空间之间的适应性调整 225

    14.5 大OS页与预取 230

    第 15章 针对可扩展性的GC优化 232

    15.1 回收阶段 232

    15.2 并行对象图遍历 233

    15.2.1 任务共享 234

    15.2.2 工作偷取 234

    15.2.3 任务推送 235

    15.3 并行对象标记 238

    15.4 并行压缩 239

    15.4.1 并行LISP2压缩器 239

    15.4.2 对象依赖树 241

    15.4.3 带用于转发指针的目标表的压缩器 244

    15.4.4 基于对象节的压缩器 246

    15.4.5 单趟就地压缩器 247

    第 16章 针对响应性的GC优化 249

    16.1 区域式GC 249

    16.2 并发追踪 252

    16.2.1 起始快照 252

    16.2.2 增量更新 256

    16.2.3 用三色术语表示并发追踪 259

    16.2.4 使用读屏障的并发追踪 260

    16.3 并发根集枚举 261

    16.3.1 并发根集枚举设计 262

    16.3.2 在根集枚举过程中追踪堆 265

    16.3.3 并发栈扫描 266

    16.4 并发回收调度 267

    16.4.1 调度并发根集枚举 267

    16.4.2 调度并发堆追踪 269

    16.4.3 并发回收调度 271

    16.4.4 并发回收阶段转换 272

    第 17章 并发移动式回收 277

    17.1 并发复制:“目标空间不变” 277

    17.1.1 基于槽位的“目标空间不变”算法 277

    17.1.2 “目标空间不变”性 280

    17.1.3 对象转发 282

    17.1.4 基于对象的“目标空间不变”算法 283

    17.1.5 基于虚拟内存的“目标空间不变”算法 285

    17.2 并发复制:“当前副本不变” 286

    17.2.1 对象移动风暴 286

    17.2.2 “当前副本不变”设计 287

    17.2.3 并发复制与并发堆追踪的关系 289

    17.3 并发复制:“源空间不变” 292

    17.3.1 “源空间不变”设计 292

    17.3.2 部分转发“源空间不变”设计 294

    17.4 无STW的完整并发移动 295

    17.5 并发压缩回收 296

    17.5.1 并发区域复制式回收 296

    17.5.2 基于虚拟内存的并发压缩 299

    第五部分 线程交互优化

    第 18章 monitor性能优化 308

    18.1 惰性锁 308

    18.2 瘦锁 310

    18.2.1 瘦锁锁定路径 310

    18.2.2 瘦锁解锁路径 313

    18.2.3 竞争标志重置支持 316

    18.3 胖锁 318

    18.3.1 整合monitor数据结构 318

    18.3.2 交由OS来支持 319

    18.3.3 瘦锁膨胀为胖锁 321

    18.3.4 休眠等待被竞争瘦锁 324

    18.4 Tasuki锁 327

    18.4.1 将同一个胖锁monitor用于竞争控制 327

    18.4.2 胖锁收缩为瘦锁 331

    18.5 线程局部锁 334

    18.5.1 锁保留 335

    18.5.2 线程亲密锁 339

    第 19章 基于硬件事务内存的设计 346

    19.1 硬件事务内存 346

    19.1.1 从事务数据库到事务内存 346

    19.1.2 Intel的HTM实现 347

    19.2 使用HTM的monitor实现 348

    19.2.1 基于HTM的monitor的正确性问题 349

    19.2.2 基于HTM的monitor的性能问题 352

    19.3 使用HTM的并发垃圾回收 355

    19.3.1 GC中HTM的机会 355

    19.3.2 复制式回收 357

    19.3.3 压缩式回收 360

    参考文献 364

     

    *** 次数:10600 已用完,请联系开发者***

    1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!384324621@qq.com
    2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理,有奖励!
    3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
    4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有★币奖励和额外收入!

    IO 源码网 » 虚拟机设计与实现 以JVM为例 PDF 下载

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    IO源码吧
    一个高级程序员模板开发平台

    发表评论

    • 105会员总数(位)
    • 11140资源总数(个)
    • 84本周发布(个)
    • 18 今日发布(个)
    • 449稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情