《程序之美系列》.mobi .txt
基本信息:
-
书名: 程序之美系列(架构之美、安全之美、数据之美)
作者: (美)郭西奥斯(Gousios,G.); (美)斯宾耐立思(Spinellis);John Viega;奥拉姆(Andy Oram) ;Jeff Hammerbacher; (美)Toby Segar
国际标准书号: 978-7-111-28356-0 978-7-111-33477-4 978-7-111-31512-4
电子版包括 .mobi .txt等格式:
《程序之美系列》.mobi 文件 21621 KB,
《程序之美系列》.txt 文件 2297 KB。
pdf部分截图:
目录简介:
- ,JTOC)的位置。Java内容表在两个方向进行组织:Java内容表中的正向偏移保存了包含引用和引用文字的静态域的内容。Java中文字的值是类似于一个字符串的东西,是字节码可以直接引用但没有域位置的东西。Java内容表中的负地址负责保存基础类型的值。按这种方式分离值,使垃圾收集器更容易地判断静态域的哪些引用应该防止一个对象被认为是垃圾。
10.4.2 运行时内存配置
启动映像记录器负责当虚拟机开始启动时布置它的内存。在启动映像中必需的所有对象都在那儿,因为它们都由将启动Java应用程序的代码引用。图10-4显示了当Jikes RVM执行时使用的内存区域的概览。
图 10-4:Jikes RVM的运行时内存配置
在图10-4中可以看到许多关键项:
启动映像管理器
启动映像管理器和它的栈由负责载入启动映像的加载器组成。
本机库
类库使用的本机库所需要的内存。这将在10.5.7节进一步讲述。
MMTK空间
有不同的垃圾收集堆供MMTK使用来支持运行的应用程序。
根映射
垃圾收集器在启动映像中可获得的域的信息。在随后的10.5.9节将进一步讲述。
代码映像
分别从Java内容表和类型信息块中可以直接获得的静态方法和虚方法的可执行代码。代码写入了单独的启动映像区域以提供内存保护的支持。
数据映像
数据映像是通过先记录启动记录和Java内容表然后对Java内容表可获得的对象进行移动所创建的。利用Java的反射API,这些对象移入自举JVM中。对象移入的顺序会影响位置,由此影响性能,所以,这个移入机制是可配置的(Rogers等2008)。
Java内容表
正如先前在10.4.1节中所述,Java内容表负责保存字和静态的域值。移动Java内容表产生启动映像。
启动记录
位于数据映像开头部分的包含在启动映像管理器和Jikes RVM之间共享数据的表。这些值在自举期间通常不能确定。
10.4.3 编译原生类并填充Java内容表
原生类是必须构建到启动映像中以让它运行的类的集合。最重要的原生类是负责启动虚拟机的org.jikesrvm.VM。如果某些类不是启动映像的一部分,那就不是原生类,因而就是引用的。当一个引用的对象在运行时被访问时,会导致类加载器加载并链接这个引用的类。原生类的清单是在自举期间通过搜索目录和读取一个明确要编译的类的清单来生成的。这个明确的清单对数组类型特别重要。通过重复编译和增加构建到启动映像中的类,就可以能生成原生类的清单。但是,这会显著地增加构建Jikes RVM的时间。一个建议的替代方案是使用Java的annotation来标示哪些是原生类。
在移动对象图和记录启动映像之前,启动映像记录器会编译原生类。编译一个原生类涉及用Jikes RVM的类加载器加载它的类,这个类加载器会自动地在Java内容表和类型信息块中分配必需的空间,然后遍历所有的方法并用Jikes RVM的一个编译器编译它们。因为这全是纯Java代码,启动映像记录器利用Java的并发API来尽可能地并行执行这个任务。一旦核心的原生类编译完成,主机JVM堆中的对象图就提供了充足的功能让Jikes RVM启动自身、分配额外的对象、开始载入和执行用户类。为了完成这个自举过程,核心对象图就利用主机JVM提供的Java的反射API的能力进行移动并记录到磁盘上Jikes RVM的对象模型中。
10.4.4 启动映像管理器和VM.boot
正如10.4节所述,启动映像管理器负责把编译后的映像载入内存。这种方式的具体细节根据操作系统而改变,但是,这些映像都设置成按请求分页载入内存。按请求分页的意思是启动映像中的页保持在磁盘上,直到需要它们。
一旦载入内存,启动映像管理器初始化启动记录,然后载入机器寄存器来把执行移交给Jikes RVM的方法org.jikesrvm.VM.boot(或简写的VM.boot)。Jikes RVM负责所有的内存布置,使高效的垃圾收集技术和有效处理Java异常的一个栈体制成为可能(参见后面的10.5.4节)。一旦进入VM.boot方法,就需要专门的封装器在启动映像管理器中的本机代码和C库之间进行传递(这些将在随后的10.5.7节进一步讲述)。
VM. boot的工作是确保这个VM处于执行程序的就绪状态。它通过初始化在记录启动映像时不能初始化的那些RVM组件来做到这一点。一些组件必须显式地启动—例如,垃圾收集器。其余的组件是那些由于在自举程序和Jikes RVM类文件之间有冲突而没有完全写入启动映像的小部分原生类。为了初始化这些类,必须运行这些类的静态初始化方法。初始化线程系统是VM.boot方法的一个重要部分。它创建必须的垃圾收集线程、一个用来运行对象的finalizer方法的线程和负责自适应优化系统的线程。还会创建一个调试器线程,但只有当操作系统给Jikes RVM发送一个信号时这个线程才会安排执行。最后才创建并开始执行的线程是负责运行这个Java应用程序的主线程。
架构之美
O'Reilly Media,Inc.介绍
推荐序一 如何看到一滴水的美丽
推荐序二 架构的架构
推荐序三 美丽架构的含义
推荐序四 美丽架构之道
译者序 架构与美
作译者简介
序 Stephen J.Mellor
前言
第一部分 论架构
第1章 架构概述John Klein David Weiss
1.1 简介
相关资料1:
- 镜下Bankart手术术后康复程序 .doc
- 心脑血管急症急救程序(1999.张全贵).PDF
- 小程序 巧应用 微信小程序开发实战 pdf
- 肩袖撕裂修补术后康复程序(1) .doc
- 《Delphi程序开发范例宝典(第3版)》.明日科技等.扫描版.pdf
- Windows程序设计(第6版) 【完整珍藏版】.pdf
- 心脏血管急症急救程序.pdf
- 《Excel在经济管理中的应用与VBA程序设计》(第二版).pdf
- Head First JavaScript程序设计中文版豆瓣.pdf
- C语言程序设计现代方法第二版.pdf
- 《FORTRAN95程序设计实验指导与测试》.pdf
- 《C程序设计》(第四版).pdf
- 深入Linux设备驱动程序内核机制.pdf
- 《Android程序设计实用教程》.pdf
- 《嵌入式Linux驱动程序设计从入门到精通》.pdf