`
trydofor
  • 浏览: 150670 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

《深入Java虚拟机(2)》摘录

阅读更多

《深入Java虚拟机(2)》摘录
作者:臭豆腐[trydofor.com]
日期:2010-04-24
授权:署名-非商业-保持一致 1.0 协议
声明:拷贝、分发、呈现和表演本作品,请保留以上全部信息。

文档目录
[[<=$INDEX]]

1. 第一章 Java体系结构介绍
【P2】四个独立但相关的技术:程序设计语言,class文件格式,API,虚拟机。
【P5】两种类装载器:bootstrap(JVM实现)和用户自定义(Java编写)。
【P6】运行时的每一个类装载器都有自己的名词空间。
【P7】class文件的字节序是高位在前(BIG-ENDIAN),同网络字节序。

2. 第二章 平台无关
【P20】平台无关要:不依赖于虚拟机回收时机,不依赖于线程优先级。

3. 第三章 安全
【P28】装载器载入类时,采用双亲委派(bootstrap无双亲),保护可信任类库边界。
【P31】java.lang.Virus是如何隔离的 ---- 运行时包。
【P32】class文件检验器,第一趟扫描,结构检查。CAFEBABE。
【P33】第二趟扫描,类型数据的语义检查。final被覆盖。
【P33】第三趟扫描,字节码验证。类的方法。
【P34】第四趟扫描,符合引用的验证。被引用类。
【P36】二进制兼容,修改必须不破坏已存在的类见调用关系。
【C3.6】安全管理器。
【C3.7】代码签名和认证。对散列签名。
【P51】策略文件。grant语句。
【C3.11】访问控制器。保护域。(一般不用,略)

4. 第四章 网络移动性
【C4】略。

5. 第五章 Java虚拟机
【C5.3】方法区和堆是共享的。程序计数器和栈是线程独享。
【C5.3.1】JVM数据类型:基本类型(其中boolean特殊,returnAddress类型
执行finally用),引用类型(类,接口,数组,null)。
【P91】用户ClassLoader及其实例在堆中,类信息,类(静态)变量在方法区。
【P97】常量池解析,把常量池中的符号引用替换为直接引用。
【P103】栈基本单位:帧,包括局部变量区,操作数栈和帧数据区(非编译时决定)。
【P104】byte,short,char,boolean在帧时做int处理,存回堆或方法区时变成原来类型。

6. 第六章 Java class文件
【P121】一个class文件只能包含一个类或接口。
【C6】十分底层,略过。拓展学习cglib封装。

7. 第七章 类型的生命周期
【C7.1】载入--连接(验证--准备--解析)--初始化。
【P162】JVM在首次主动使用类时,初始化他们。
【P162】主动使用:创建新实例;调用静态方法;使用类或接口的非常量静态字段;
调用特定的反射方法;初始化其子类;作为JVM启动时初始化的。
【P163】static final 常量表达式的,编译时生成常量的本地拷贝,非主动使用。
【P164】显式实例化途径:new;newInstance();clone();反序列化。
【P166】(args[0]+args[1]);隐式创建3个String和1个StringBuffer实例。
【P174】构造函数不允许捕捉被调用的this(),super()构造函数抛出的异常。
【C7.2.2】void finalize() 在GC释放内存前执行一次(慎用)。

8. 第八章 连接模型
【P177】class文件把它所有的引用符号保持在常量池。
【P178】运行时连接类,Class.forName或自定义ClassLoader loadClass()。
【P180】forName自动初始化,如JDBC注册驱动;而loadClass需要initialize=true。
【P182】引用数组,由元素的ClassLoader定义,基本类型数组,有bootstrap定义。
【P184】加载类时先处理超类,止于Object。从Object返回的路上处理接口。
【BTW】CONSTANT:Class--Fieldref--Methodref--InteffaceMethodref--String--Integer...
【BTW】不hack高级应用,一般用不上,略。

9. 第九章 垃圾回收
【P239】JVM规范中未要求特定的垃圾回收技术。
【P241】引用计数GC,跟踪GC,压缩GC,拷贝GC,按代GC,自适应GC。
【C9.9】火车算法。车厢,火车,火车站。
【P247】是GC运行了对象的finalize方法,无法预测,慎重使用。
【P248】强引用禁止GC,软,弱,影子引用不禁止。
【P251】软和弱引用调用get时,可得到对象的强引用或null,影子则只有null。
【BTW】深入学习 http://mindprod.com/jgloss/phantom.html

10. 第十章 到 结尾
【BTW】十分底层,即用即查。

11. 收尾总结
本次阅读未能深入,因为实在是太深了。
本书如无特殊需求,特大毅力,是啃不下去的。
作为了解性内容,备查就好。

原文:http://www.trydofor.com/a9w3-auhome/trydofor/article/2010/0427154940/body.htm

分享到:
评论

相关推荐

    The Java™ Virtual Machine Specification Third Edition

    《Java虚拟机规范第三版》是一份重要的技术文档,为Java开发者深入理解Java虚拟机的工作原理提供了详尽的指导。通过阅读此规范,开发者不仅可以了解到JVM的基本概念和技术细节,还能掌握如何正确地使用和引用该规范...

    Think-in-JAVA-4th-Edition

    - **Java虚拟机(JVM)**:解析JVM的工作原理和性能优化技巧。 - **与非Java代码交互**:讨论Java与其他编程语言代码之间的交互方法。 #### 三、特色亮点 - **实用性**: 提供超过320个实用的Java程序示例,共计15000...

    学习java的一些详细资料

    9. **JVM**:理解Java虚拟机的工作原理,包括内存模型、垃圾收集机制、类加载器以及性能优化策略,是深入Java技术的重要部分。 10. **设计模式**:面试中常见的设计模式问题,如单例模式、工厂模式、装饰器模式等,...

    Thinking in java 高清版(可直接复制源程序)

    3. **深度解析**:深入讲解了Java的高级理论,如网络编程、多线程处理、虚拟机性能优化等。 4. **易于理解**:通过简短精悍的代码示例帮助读者理解抽象概念。 5. **面向对象**:详细阐述面向对象的基本原理,从继承...

    2020年最新Java核心知识点整理.pdf

    文件还特别提到了JVM(Java虚拟机)以及GC(垃圾回收)等核心知识点,这些都是深入理解和开发Java应用的关键部分。 针对文件内容的【部分内容】摘录,以下是知识点的详细阐述: ### JVM内存区域 JVM是Java程序能够...

    JAVA卡 运行环境规范2.2.1

    1. **基础架构与组件**:JavaCard平台2.2.1版本的基础架构包括Java虚拟机(JVM)、API集合、安全模型等核心组件。这些组件为开发者提供了构建复杂应用所需的工具和环境。 2. **安全特性**:JavaCard平台强调安全性,...

    java_for_oracle.rar_for oracle_oracle

    Oracle数据库自版本8i开始就支持内置的Java虚拟机(JVM),允许开发者直接在数据库内编写和执行Java代码。这使得Oracle数据库不仅能够处理结构化数据,还能处理复杂的业务逻辑,实现了数据库和应用程序的紧密集成。...

    Javaxingneng.rar_java_文档

    1. **JVM参数调整**:Java虚拟机(JVM)是运行Java程序的关键,通过调整JVM的内存分配、垃圾回收策略等参数,可以显著提升程序性能。例如,设置合适的堆大小、新生代和老年代的比例、并发收集器的选择等。 2. **...

    Java与UML面向对象程序设计.pdf 下载.rar下载

    它的核心特性包括平台无关性(通过Java虚拟机JVM运行)、垃圾回收机制、自动内存管理以及强大的类库支持。面向对象编程(Object-Oriented Programming,OOP)是Java的基础,它将现实世界中的概念映射到代码中,如类...

    java程序员面试宝典

    该文件为Java程序员面试宝典的一部分,主要内容包括Java基础知识点的面试问题及其答案,非常适合准备参加Java程序员面试的求职者。...由于篇幅限制,以上知识点仅为部分摘录,具体内容需要结合实际文档深入学习和理解。

    JVM Specification Third Edition 草稿

    允许用户使用《Java虚拟机规范》第三版进行内部评估目的,包括但不限于开发旨在在符合该规范的实现上运行的应用程序(前提是这些应用程序本身不实现规范的任何部分)、与第三方讨论规范内容,以及摘录规范的简短段落...

    BeautifulKotlin:我在谈论Kotlin时使用的摘录

    Kotlin是一种现代、静态类型的编程语言,由JetBrains公司开发,主要针对Java虚拟机(JVM)和Android平台。自2017年被Google宣布为Android开发的首选语言以来,Kotlin的受欢迎程度迅速攀升,成为开发者社区中的热门...

    乌迪奇·Kotlin

    Kotlin的设计目标是提供更简洁、安全和可互操作的代码,它兼容Java虚拟机(JVM)并支持编译为JavaScript或原生代码。Kotlin的语法清晰,易于阅读和编写,支持函数式编程和面向对象编程特性。 在【udacity-kotlin-...

    clojure网站:clojure.org网站

    Clojure 是一种基于 Lisp 传统的静态类型编程语言,设计目标是运行在 Java 虚拟机(JVM)上,同时支持函数式、命令式、声明式和面向对象的编程范式。它强调代码即数据,使得 Lisp 的语法和元编程能力成为其独特优势...

    电脑爱好者2006第一期

    从《电脑爱好者》2006年第一期的目录及部分摘录中,我们可以提炼出以下关键知识点,这些内容不仅反映了当时IT领域的关注焦点,也对现今的技术爱好者和专业人士具有一定的参考价值。 ### 新闻与焦点(News&Focus) ...

Global site tag (gtag.js) - Google Analytics