java虚拟机有自己完善的硬件架构,如处理器,堆栈,寄存器等,还有相应的指令系统
jvm屏蔽了与具体操作系统相关信息,使得java程序只需要生产在java虚拟机上运行的目标代码(字节码),
就可以在多种平台上不加修改地运行。
java虚拟机在执行字节码时,实际上最终还是把字节码解释成具体平台上的指令执行。
sun规定,每个字节码指令占8bit,那么最多才256个指令,目前java的还没超过这个
跨平台只是java代码在各个操作系统上都是统一的,他只有虚拟机一个操作系统,
他把传统意义上的编程语言与操作系统的紧耦合关系变成了虚拟机与操作系统的紧耦合关系。
所以因为他有中间字节码,那么他会有效率问题
java虚拟机由两个子系统和两个组件构成
Class loader子系统 ----对应于真实计算机的i/o系统
execution engine(执行引擎)子系统 ---对应于 cpu, 完成指令的执行
Runtime data area(运行时数据区域) 组件 ---class loader加载上来后放到这里,想象成内存空间
native interface(本地方法接口) ---赋予了java调用其它方法语言的能力----想象成网卡,实现了不同语言的互联
Class Loader 子系统的作用:根据给定的全限定类名来装载class文件内容到Runtime data area中的
method area(方法区域)。java程序员可以extends java.lang.ClassLoader类来写自己的ClassLoader
execution engine子系统的作用:执行classes中的指令,任何JVM specification实现(JDK)的核心都是
Execution engine,不同的JDK例如Sun的jdk和IBM的JDK好坏主要就取决于他们各自实现的Exection engine的好坏---cpu嘛
native interface组件:与native libraries交换,是与其他编程语言交互的接口。当调用native方法的时候,就进入了一个
全新的部首虚拟机限制的世界,所以也很容易出现JVM无法控制的native heap OutOfMemory
java分配对象会分配在堆空间当中,当你java写的不好,那么heap很可能被沾满,所以---native heap OutOfMemory
或者:不当的使用了本地方法调用,也就是heap中会调用不受JVM控制的外部的东西,那么有时heap中的引用将会被耗尽,
或者,JVM之外的空间被耗尽,而JVM需要申请内存扩展时,将会报错
Runtime Data Area组件
1。Heap空间:用来存放java实例对象
2。Method area :被装载的java类信息也就是字节码信息存放于此
3。 Java Stack栈空间:用于存放每个运行的java线程的局部变量,操作数,中间结果,以及执行上下文信息(1M---每个线程的栈大小,
这个东西加大,说明负载粒度加大了);
4.Program Count程序计数器:每一个java线程都有它自己的PC寄存器,也就是该线程启动时创建的,PC寄存器的内
容总是指向下一条将被执行指令的地址,这里的地址可以是一个本地指针(其中一种实现方式);也可以是在方法区中相对应与该方法起始指令的
偏移量(第二种实现方式,不同厂商实现不同)。---相当于pc寄存器
5。Native Method Stack本地方发栈:保存本地方法进入区域地址;
以上五个部分只有Heap和Method Area是被所有线程共享使用的;而Java Stack,Program counter和Native method stack
是以线程为粒度的,每个线程都有自己的部分
分享到:
相关推荐
#### 二、JVM体系结构概览 JVM启动后,在操作系统层面表现为一个独立的进程,其内部架构包括以下几个关键组成部分: ##### 2.1 类装载器(ClassLoader) 类装载器负责加载Java类文件(.class文件)。这些文件包含...
Java体系结构包括三个主要部分:Java开发工具集(JDK)、Java运行时环境(JRE)和JVM。JDK是开发和调试Java应用程序的工具集合,包含JRE和额外的开发工具,如编译器(javac)和JVM调试工具。JRE则是运行Java应用程序...
虚拟机(Virtual Machine, VM)是一种能够模拟特定计算机体系结构、执行特定指令集的软件环境。它可以分为两类: - **硬件级虚拟机**:例如x86架构的虚拟化技术。 - **高级语言虚拟机**:例如Java虚拟机(JVM)、.NET的...
《Java深度历险》这本书是为那些希望深入了解Java平台运行机制的初学者和有经验的开发者准备的。它深入探讨了Java技术的核心概念,揭示了Java如何在幕后工作,帮助读者提升对Java语言的理解和应用能力。 1. **Java...
《Java深度历险》这本书是Java开发者深入了解Java技术体系的重要参考书籍。它涵盖了Java语言的各个方面,特别是关于Java虚拟机(JVM)的深入解析,是提升Java编程技能的关键资源。下面,我们将围绕这个主题,详细...
总的来说,Java多线程编程是一个深度和广度兼具的领域,涵盖了许多概念和技术,包括线程创建、生命周期管理、同步与通信、并发工具以及内存模型。通过深入学习和实践,开发者可以充分利用Java的多线程特性,构建高效...
《Java深度历险》这本书是Java开发者进阶的宝贵资源,它涵盖了Java编程中的许多核心概念和技术,旨在帮助读者深入理解这门强大的编程语言。在解压后的文件中,我们可以期待找到一系列章节或教程,详细讲解Java的各个...
《JAVA深度历险》这本书是Java开发者的一本深入学习指南,它旨在揭示Java语言的内在机制和高级特性,帮助读者从底层理解Java的工作原理。在Java编程的世界里,深度理解和熟练掌握这些知识点对于提升开发效率、优化...
根据提供的信息,我们可以深入探讨与“Java常见笔试、面试题目深度剖析第二、三讲”相关的知识点。虽然直接的视频或文档链接无法在此处查看,但根据标题和描述中提到的信息,我们可以推测出讲座可能涉及的一些核心...
Java作为一门广泛使用的编程语言,其知识体系涵盖了众多领域,对于面试和实际开发至关重要。以下是对标题和描述中提到的Java知识点的详细说明: 1. **Java基础**:这是学习Java的第一步,包括基本语法、数据类型、...
JVM的体系结构包括几个关键组件: 1. **类装载子系统**:负责查找和装载具有特定名称的类或接口,确保正确执行程序。 2. **运行引擎**:执行装载类中的指令,是JVM的核心。 3. **方法区**:存储解析后的类信息,...
Java后端体系高级面试题是针对Java开发人员的深度技术面试准备材料,涵盖了广泛的Java后端技术主题。这些题目旨在测试候选人的专业知识、问题解决能力以及在实际项目中的应用技能。以下是一些可能涵盖的关键知识点:...
3. **深度学习资料**:对于希望深入了解Java内部机制的开发者来说,这是一本不可或缺的学习资料。 4. **兼容性保障**:明确了不同版本Java之间的兼容性问题,有助于确保跨平台的一致性。 #### 三、主要内容概览 ###...
Java 2平台的安全体系结构主要由三个核心组件构成: 1. 类加载器(Class Loaders):类加载器负责将类文件加载到JVM中。它们在安全中起着关键作用,因为每个类加载器都有自己的命名空间,这使得不同来源的代码可以...
《深入理解Java虚拟机》是一本深度探讨Java技术体系中Java虚拟机(JVM)的权威书籍,马士兵的JVM调优参考资料则为实践应用提供了丰富的指导。本压缩包包含了一系列与Java虚拟机相关的文档,涵盖了从基础到进阶的各种...
《JAVA SE深度解析》 Java SE(Java Standard Edition),是Java平台的标准版,主要用于桌面应用和服务器端开发。它提供了一套丰富的API和强大的工具,让开发者能够创建、部署和运行跨平台的应用程序。本讲义将深入...
以上知识体系涵盖了Java开发者在面试时可能遇到的大部分问题。通过深入学习和实践,可以有效提升技术水平,应对各种技术挑战。对于压缩包文件"Java_Crash_Course-main",可能包含了有关这些主题的速成课程或教程,...
以上知识点的深入学习和实践,能够构建出扎实的Java技术体系,对于提升个人在大数据、算法数据结构、人工智能和数据分析领域的专业能力大有裨益。在实际工作中,不断学习和运用这些知识,不仅能够提高编程效率,还能...
7. **I/O与NIO**:讲述Java I/O流体系结构,以及非阻塞I/O(NIO)的概念和应用,提高程序的读写效率。 8. **网络编程**:讨论TCP/IP协议栈,讲解Socket编程,以及Java的网络API,为网络应用开发打下基础。 9. **...