Java程序的运行过程:
1, 编译器将源代码编译成.class文件(对于虚拟机来说并不关心class文件的来源是什么,只要他符合java class文件的规则,就可以在jvm中运行,使用其它语言将其编译成class文件也是可以在jvm中运行的)
2,由ClassLoad(类加载器)将.class文件加载到内存
3, 由Execution Engine(执行引擎)解释命令,提交到操作系统
4, 若是需要调用其它语言的函数则由Native Method Interface(本地方法接口)完成,首先会在native method stack(本地方法栈)中登记函数,执行引擎执行是加载native libraries(本地方法库)
ClassLoad(类装载器):加载类文件到内存,并且只加载符合格式的class文件,并不负责是否能够运行
Runtime Data Area
Programme Counter Resister:每当启动一个线程时,都会为这个新线程创建一个自己的 pc寄存器。
Java Stack:Java栈是线程私有的。每当启动一个线程时,.Java虚拟机都会为他分配一个Java栈。以帧为单位进行压栈或者出栈。当线程调用Java方法时,虚拟机则压入一个新的栈政到该线程的Java栈中。当方法返回时,这个栈帧被从Java栈中弹出并被抛弃。其存储局部变量、操作栈、动态链接、方法出口。
Native Method Stack:本地方法栈则是为虚拟机使用的Native方法服务。某个虚拟机实现的本地方法接口是使用c连接模型的话,那么它的本地方法栈就是c栈
Heap:堆是Java虚拟机所管理的内存中最大的一块,Java堆是被所有的线程共享的一块内存区域,在虚拟机启动时创建。所有的对象实例都要以及数组都要在堆上分配,同时堆也是Java虚拟机主要管理的区域
Method Area:类加载器加载class文件到内存时,虚拟机会提取其中的类型信息,并将这些信息存储到方法区。方法区用于存储已被虚拟机加载的类信息、常量静态变量等数据。由所有的线程贡献方法区。
Execution Engine:执行引擎也叫解释器,负责解释命令,提交操作系统执行。
相关推荐
"浅谈JAVA虚拟机JVM及工作原理" Java虚拟机(JVM)是Java语言的 runtime 环境,它提供了一个平台独立的环境,使得Java程序可以跨平台运行。JVM 的主要组件包括虚拟机栈、堆、方法区、程序计数器、本地方法栈等。 1...
JVM的结构可以分为五个主要部分: 1. **指令集**:这是JVM的汇编语言,包含约248种字节码指令,用于执行基础的计算和控制流程操作,如加载和存储数据、执行算术运算、跳转等。 2. **寄存器**:JVM有一组虚拟寄存器...
了解JVM的内存结构有助于我们进行性能优化。例如,通过减少对象的创建,可以降低垃圾回收的压力,提高程序效率。理解栈的工作原理能帮助我们避免栈溢出,比如通过控制递归深度和循环次数。此外,了解垃圾回收机制让...
- **加载**:从磁盘或网络加载class文件到内存,创建类的运行时数据结构,并在堆中生成一个Class对象作为访问方法区的入口。 - **链接**:验证类文件的格式正确性,确保安全;准备阶段为静态变量分配内存并设置初始...
然而,尽管如此,理解JVM的内存结构对于识别和解决内存问题至关重要。 JVM运行时数据区是理解Java内存管理的基础。根据JVM规范,它主要分为以下几个区域: 1. **程序计数器(PC Register)**:每个线程都有自己的...
首先,理解JVM内存结构是GC调优的基础。JVM内存主要分为堆内存(Heap)和非堆内存(Non-Heap),其中堆内存又细分为新生代(Young Generation)、老年代(Tenured Generation或Old Generation)和永久代(Permanent ...
Java反射技术浅谈 Java作为一种广泛使用的编程语言,它的设计目标之一是提供一种灵活的编程方式,使程序能够在运行时识别和操作对象。为了实现这一目标,Java语言引入了反射机制,使得开发者能够动态地探索和操作...
浅谈计算机应用软件开发中编程语言的选择研究 随着信息技术的飞速发展,计算机应用软件已经深入到我们生活的各个角落,成为现代社会不可或缺的一部分。对于软件开发企业来说,选择合适的编程语言至关重要,因为它...
2. **JVM内存管理**:监控JVM内存使用情况,避免内存泄露。 3. **JDBC连接池管理**:合理配置连接池参数,提高数据库访问效率。 4. **日志检查**:定期检查中间件日志文件,及时发现异常情况。 以上内容全面覆盖了...
Java使用垃圾回收机制自动管理内存,减少了程序员处理内存泄漏的风险。此外,Java采用类作为基本的构造单元,支持多态性和封装,使得代码更加模块化和易于维护。 Java的跨平台能力得益于Java虚拟机(JVM)。JVM允许...
对于程序员而言,Java的这些特性能够显著提高开发效率,并且其结构简单还体现在了内存管理和错误处理机制上。Java能够自动进行内存管理,比如垃圾回收,从而减轻了程序员在内存管理方面的负担。同时,Java还提供了...
Android运行环境一览 Android基于linux内核,...Dalvik VM采用寄存器架构,而不是JVM的栈架构,更适于移动设备。java源代码经过编译成为.class字节码文件,然后由谷歌提供的 dx工具将其转化为Dalvik可识别的.dex文件
1. **加载阶段**:当类首次被使用时,JVM会从硬盘上的`.class`文件读取类的二进制数据并加载到内存中。此时,加载的内容包括类的结构信息,如类名、方法定义等,但不执行任何代码。静态成员变量、静态方法、静态初始...
浅谈Java垃圾回收机制.doc文档可能会涵盖以下几个关键点: 1. **对象生命周期**:当一个对象被创建后,它会在内存中占据一定的空间。如果对象不再被任何引用指向,那么这个对象就成为垃圾。 2. **垃圾收集器**:...
例如,字符串的常量池节省内存,缓存 Hash 类以字符串做 key 数据结构的 hashCode,从而提高访问性能等。由于字符串是编程语言里面最广泛使用的数据结构,所以针对字符串的不可变性带来的优势,可以放大到整个运行的...
在Java中,String对象是不可变的,当创建一个新的字符串时,JVM会首先检查字符串池中是否已经存在相同值的字符串对象。如果存在,就返回这个对象的引用;如果不存在,则在字符串池中创建一个新的String对象,并返回...