Inside the Java 2 Virtual Machine - Bill Venners

Inside the Java 2 Virtual Machine

Bill Venners

出版时间

2000-01-06

ISBN

9780071350938

评分

★★★★★
精彩摘录
  • "在java虚拟机内部有两种线程:守护线程和非守护线程。守护线程通常是由虚拟机自己使用的,比如执行垃圾收集任务的线程。但开始于main()的是非守护线程。 当程序中所有的非守护线程都终止时,虚拟机实例将自动退出。程序本身也能够通过调用runtime类或者system类的exit()方法来退出。"
  • "任何垃圾收集算法都必须做两件事情。首先,他必须检测出垃圾对象。其次,它必须回收垃圾对象所使用的堆空间并还给程序。 垃圾检测通常通过建立一个根对象的集合并且检查从这些根对象开始的可触及性来实现。如果正在执行的程序可以访问到的根对象和某个对象之间存在引用路径,这个对象就是可触及的。对于程序了来说,根对象总是可以访问的。从这些根对象开始,任何可以被触及的对象都被认为是“活动”的对象。无法被触及的对象呗认为是垃圾,因为他们不在影响程序的未来执行。 垃圾收集算法: 1、引用计数收集器(无法检测出循环,并且计数带来开销) 2、跟踪手机器 3、压缩收集器 4、拷贝收集器 5、按代收集的收集器 6、自适应收集"
  • "一个Java应用程序可以使用两种类装载器:”启动“类装载器和用户定义的类装载器。启动类装载器(这是系统中唯一的)是Java虚拟机实现的一部分。例如,如果Java虚拟机在已有操作系统上实现为C程序,那么启动类装载器就会是此C程序的一个部分。 Java应用程序能够在运行时安装用户定义的类装载器,这种类装载器能够使用自定义的方式来装载类,例如,从网络上下载class文件。"
  • "1. 在Java中,没有通过使用强制转换指针类型或者通过进行指针运算直接访问内存的方法。在Java中使用对象时,需要严格地遵守类型规则。 2. 自动垃圾收集。Java和C++一样,有一个new操作,可以通过它来为新对象在堆中分配内存。但是和C++不同的是,Java并没有与new相对应的 delete操作符。在Java中,只需要停止对一个对象的引用,一段时间后,垃圾收集器户自动回收这个对象所占据的内存。垃圾收集器禁止Java程序员显式指明哪个对象应该被释放。 3. 数据边界检查。在Java中,数组是发展完备的对象,在每次使用数组的时候,Java都会检查数组的边界。当在Java中创建一个10个成员"
  • "JAVA体系结构包括四个独立但相关的技术: JAVA程序设计语言 JAVA class文件格式 JAVA应用编程接口(API) JAVA虚拟机 JAVA虚拟机和JAVA API 的组合除了 被称为JAVA运行时系统之外,还被称为JAVA平台。 JAVA虚拟机的主要任务是装载class文件并且执行其中的字节码。"
  • "对于C或C++来说,一个平台上的二进制可执行文件不能在其他平台上工作(因为这个二进制文件包含了目标处理器的机器语言)。而JAVA class文件时可以运行在任何支持JAVA虚拟机的硬件平台和操作系统上的二进制文件(JAVA编译器把JAVA源文件的指令翻译成字节码,这种字节码就是java虚拟机的“机器语言”)。 JAVA API 是运行库的集合,它提供一套访问主机系统资源的标准方法。 正是由于在每个特定的主机平台上都明确的实现了JAVA虚拟机和JAVA API,java程序本身就能够成为具有平台无关性的程序。"
  • "使用JAVA语言最引人瞩目的原因之一是,它能够提高开发者的效率;而他最主要的缺点在于执行速度较慢。 面向对象技术的承诺之一是提升代码的重用率,提高开发者的效率。 java保护内存完整性的方法: 1、由于JAVA在运行时强制执行严格的类型规则,根本无法以可能导致内存冲突的方式直接管理内存。因此,java程序中不会出现那些使C++程序员降低效率的特定的bug。 2、垃圾收集器(但它给程序运行时的性能加入了一些不确定性) note:在不同的虚拟机中,一个特定的java'chengxuzhong的对象可能在不同的事件被垃圾收集。 3、数组边界检查。在C++中数组操作实际上是指针运算,这会带来潜在的内存"
  • "1.3.1 Java虚拟机 不同的Java虚拟机中,执行引擎可能实现的非常不同。在由软件实现的虚拟机中,最简单的执行引擎就是一次性解释字节码。另一种执行引擎更快,但是也更消耗内存,叫做“即时编译器”(Just-in-time compiler)。在这种情况下,第一次被执行的字节码会被编译成本地机器代码。编译出的本地机器代码会被缓存,当方法以后被调用的时候可以重用。第三种执行引擎是自适应优化器。在这种方法里,虚拟机开始的时候解释字节码,但是会监视运行中程序的活动,并且记录下使用最频繁的代码段。程序运行的时候,虚拟机只把那些活动最频繁的代码编译成本地代码,其他的代码由于使用得并不频繁,继续保留为字"
用户评论
很经典的著作,对JVM的机制讲的比较细。做本科毕设的时候用。英文原版啃了很久,但跳过了其中CG,多线程等章节。有空再读!
http://www.artima.com/insidejvm/ed2/ 开始:2009-11-? 结束: 笔记:docs.google.com 结束:2009-12-7
One of the best books about Java Virtual Machine.
火箭的成功发射让人感觉到技术的力量,然而对于星际远航来说火箭的有效载荷和可靠性远远不够。Java作为计算机领域的火箭推进器,给我们带来许多反思。
收藏