1、不同Java虚拟机执行引擎的实现不同,大体可分为三种
第一种最简单,就是直接一次性解释字节码。
第二种更快,但更消耗内存,叫即时编译器(JIT)。在这种情况下,第一次执行的字节码会被编译成本地机器代码,并缓存起来,当方法以后被调用的时候重用。
第三种是自适应优化器,在这种方法里虚拟机刚开始解释字节码,但会监视运行中程序的活动,记录下使用最频繁的代码段。程序运行的时候,只编译那些最频繁的代码段成本低代码,其他继续保留为字节码。
2、Java方法和本地方法
Java方法是用Java编写的方法,而本地方法则是用其他语言(C、C++或者汇编语言)编写的,编译成和处理器相关的机器代码。本地方法保存在动态连接库中,格式是各个平台专有的。本地方法是连接Java程序和底层主机操作系统的连接方法。使用本地方法一般是在希望使用特定主机上资源,又无法从Java API访问,所以写一个与平台相关的Java程序来调用本地方法。
3、一个Java应用程序可以有两种类装载器
启动类装载器(bootstrap)和用户定义的类装载器。启动类装载器(在系统中是唯一的)是Java虚拟机实现的一部分,会使用某种默认的方式从本地磁盘装载类,包括Java API的类。
4、Java Class
平台无关性方面的任务:为Java程序提供独立于平台的二进制形式服务
网络移动性方面的任务:class文件设计紧凑,因此可以快速的在网络上传送。其次由于Java程序是动态连接和动态扩展的,class文件可以在需要的时候才下载。
5、Java的安全模型
沙箱:对能做什么不能做什么做出了严格的规定。例外:本地方法不受控制。当线程调用本地方法时,它就跳出了这个沙箱,所以调用本地方法时必须确认它是可信的。
安全模型四大部分:类装载器体系结构、class文件检验器、Java内置安全特性、安全管理器
前三个部分一起达到一个共同的目的:保持Java虚拟机的实例和它正在运行的应用程序的内部安全性,使得它们不被下载的有恶意的或者有漏洞的代码侵犯。
第四部分主要用于保护虚拟机的外部资源不被虚拟机内运行的恶意的或者有漏洞的代码侵犯。它是单独的对象,在运行的虚拟机中,它在访问控制中——对外部资源的访问控制——中起中枢作用。
6、字节码和栈帧的理解
字节码代表了Java的方法,它是由被称为操作码的单字节指令组成的序列,每一个操作码后都跟着一个或多个操作数。操作数用于在Java虚拟机执行操作码指令时提供所需的额外的数据。执行字节码时,依次执行每个操作码,这就是Java虚拟机内构成了执行的线程。每一个线程被授予自己的Java栈,这个栈是由不同的栈帧构成的。每一个方法调用将获得一个自己的栈帧——栈帧其实就是一个内存片断,其中存储着局部变量和计算的中间结果。在栈帧中,用于存储方法的中间结果的部分被称为该方法的操作数栈。操作码和它的(可选的)操作数可能指向存储在操作数栈中的数据,或存储在方法栈帧中的局部变量中的数据。这样,在执行一个操作码时,除了可以使用紧随其后的操作数,虚拟机还可以使用操作数栈中的数据,或局部变量中的数据,或者两者都用。
7、Java的动态连接和动态扩展
动态连接是指加载类的时候,只有到需要用到的时候JVM才去加载它,有一点类似于lazy-load。
动态扩展是装载class的另一种方式(可能从网络上下载它们),可以延迟到Java程序运行时才装载。
分享到:
相关推荐
### JVM学习笔记核心知识点整理 #### 一、引言与背景 随着软件开发技术的不断发展,Java作为一种广泛应用的编程语言,其背后的核心技术——Java虚拟机(JVM)的重要性日益凸显。掌握JVM不仅可以帮助开发者更好地理解...
这份"Java学习笔记:JavaSe、Spring、JVM、MySQL、MyBatis....zip"的压缩包文件,包含了Java学习的重要组成部分,旨在帮助初学者或有经验的开发者深入理解Java技术栈。 首先,JavaSe(Java Standard Edition)是...
Java学习笔记源码MD.rar是一个压缩包,其中包含了一系列关于Java编程语言的学习资料,特别是针对JVM(Java虚拟机),Spring框架以及Java多线程等内容的深入探讨。这些主题是Java开发中的核心部分,对于任何想要提升...
### Java课堂笔记学习 #### 软件定义与软件开发 - **软件**:软件是运行在硬件之上的一组指令集,这些指令集能够完成特定的功能。软件开发过程包括设计和编码两个主要阶段。 #### 编程语言的重要性 - **编程语言...
### Java+JDK+6 学习笔记知识点详解 #### 一、Java 概述 - **起源与发展:** - Java 最初是由 Sun Microsystems 的 Green Project 开发出来的编程语言,最初是为了创建一个名为 Star7 的应用程序。 - 1995 年 5 ...
### CoreJava学习笔记 #### 一、JAVA特点与运行原理 **JAVA特点:** 1. **简单性**:Java的设计者们将C++语言中许多不易理解和容易混淆的部分去除,使得Java更容易理解与掌握。 2. **面向对象**:Java几乎一切都...
JPDA 是 Java 平台上用于调试的标准体系结构,它由以下几个主要部分组成: 1. **JVM TI (Java Virtual Machine Tool Interface)**: 定义了 JVM 为了支持调试而必须提供的功能及相应的访问接口。这些接口是由 JVM...
《良葛格的Java学习笔记全》是一份深入浅出的Java编程学习资源,适合初学者及有一定基础的开发者。这份笔记以Java 5.0版本为基础,详细讲解了Java语言的核心概念和技术,旨在帮助读者建立起坚实的编程基础,进一步...
这些只是Java学习笔记_上篇的部分内容,下篇可能将涵盖更深入的主题,如文件操作、网络编程、多线程、反射、设计模式等。对于初学者来说,系统地学习并理解这些知识点是掌握Java编程的基础。通过不断练习和实践,...
### 学习笔记之对象的创建(Java) #### Java技术与Java虚拟机 Java作为一种广泛使用的编程语言,其独特之处在于“一次编写,到处运行”的理念。这一特性主要得益于Java虚拟机(JVM)的存在。Java技术主要包括以下几...
"java技术从入门到精通(孙鑫)学习笔记Lesson1"涵盖了Java的基础知识,包括JDK、JRE、J2SE、J2EE和J2ME等核心概念。 JDK,全称为Java Develop Kit,是Java开发工具包,包含了编译器、调试器和各种工具,用于编写、...
学习Java不仅限于基础知识,还需要深入了解JVM(Java虚拟机)、设计模式、Spring框架、MyBatis、Maven等工具的使用,以及数据库操作、前端技术、分布式系统等相关知识。实践项目开发和参与开源项目也是提升技能的...
"JVM成神之路.rar"这个压缩包显然提供了一条深入理解JVM的路径,通过作者精心录制的6小时视频教程和54页的配套笔记,我们可以期待全面了解JVM的体系结构以及与其相关的内存管理,特别是垃圾回收(GC)机制。...
【Java编程基础】 ...以上是黑马Java教程知识点笔记的主要内容,涵盖了Java编程的基础到进阶知识,是学习和巩固Java技能的重要参考资料。通过深入理解和实践这些知识点,开发者可以逐步提升Java编程能力。
Java是一种广泛使用的编程语言,具有面向对象、分布性、健壮性、安全性、体系结构中立性、可移植性、解释性、高性能、多线程和动态性等特点。它是由James Gosling带领的小组开发的,属于半编译半解释型语言。Java...
### Java核心技术卷1知识点梳理 ...以上是对《Java核心技术卷1》学习笔记的关键知识点梳理,涵盖了Java的基本概念、编程环境、数据类型、字符串操作、控制流结构等内容,有助于初学者快速掌握Java的基础知识。
十余年JAVA从业经验,精通JAVA技术体系,有志于做JAVA技能提升的朋友可与我联系,交个朋友 十余年JAVA从业经验,精通JAVA技术体系,有志于做JAVA技能提升的朋友可与我联系,交个朋友 十余年JAVA从业经验,精通JAVA...
Java学习笔记第三部分主要涵盖了Java编程语言的深入学习,包括核心概念、高级特性以及实际应用。这个压缩包可能包含一系列的视频教程、讲义或代码示例,旨在帮助学习者进一步提升Java技能。"编著 良葛格"可能指的是...