首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java程序执行过程及内存机制

此外还会介绍Java程序所占用的内存是被如何管理的:堆、栈和方法区都各自负责存储哪些内容。最后用一小块代码示例来帮助理解Java程序运行时内存的变化。...Java程序执行过程 ZOYfmKJIopUDleP.jpg 步骤 1: 写源代码,源代码将以.java的文件格式保存在电脑硬盘中。...那么JIT编译器(Just-In-Time Compiler)是如果参与进程序执行过程中呢?让我们来看以下两个例子。...当然,这只是JIT编译器的优化手段之一,不同公司设计的JIT编译器对Java程序的运行会有不同的优化方式。此外需要知道的是,JIT编译器并不是每次都会参与到执行过程中来。...最后让我们通过一个小例子来理解Java程序执行时内存的变化。

33220

Java 程序执行过程的内存分析

Java 程序执行过程的内存分析 内存分析先知 栈: 1、每个线程私有,不能实现线程间的共享! 2、局部变量放置于栈中。 3、栈是由系统自动分配,速度快!栈是一个连续的内存空间!...2、用来存放程序中永远不变或唯一的内容。(类代码信息、静态变量、字符串常量) ? 注:常量池具有共享的机制,不同类的常量池之间共享数据。...; } } Test1类 重点:注意看代码里的注释,我把每一条的语句的执行过程都做了很详细的讲解 public class Test1 { public static void...赋值为这个字符串的引用 s1.name = "老叶"; //通过 s1 这个引用先找到Student对象,然后找到 study() 方法的引用,然后去方法区内找到方法,执行该方法...,开一个栈帧,执行完成后释放这个栈帧。

58010
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java程序main方法执行流程

    Java程序main方法执行流程 当我们编写完java源代码程序后,经过javac编译后,执行java命令执行这个程序时,是怎么一步步的调用到我们程序中的main方法的呢?...java命令是在安装jre/jdk时配置到系统环境路径中去的,执行java命令时会找到bin目录下的java执行程序,并将我们编译后的java程序类名传递进去就可以执行了。...java执行程序是由C++编写的,它的内部会启动一个Java虚拟机实例。 虚拟机启动入口函数位于src/java.base/share/native/launcher/main.c。...// src/java.base/share/native/launcher/main.c // java程序启动入口主函数 JNIEXPORT int main(int argc, char **argv...命令执行一个应用程序时,首先会先启动虚拟机实例,启动过程中包含了很多初始化工作,这些工作是为java程序提供运行环境的必要条件。

    1.2K30

    不要再问我Java程序是怎么执行的了!

    Java程序执行过程 那有了Java程序的运行环境等一些列支持后,Java程序是如何做到从一个只有代码的.java源文件变成计算机可执行的文件的呢?如下图,是Java程序执行过程。 ?...Java字节码:是Java虚拟机执行的一种指令格式。 解释器:是一种电脑程序,能够把高级编程语言一行一行直接翻译运行。...其制成品无需依赖编译器而运行,程序运行速度比较快 通过上图我们知道Java程序执行会经过以下几个步骤:编译-->装载字节码-->校验字节码-->解释字节码-->执行,然后我们看一下这几个步骤具体执行过程...,以及Java程序执行过程对应到我们的实际操作: 1、编译 在windows环境中,打开命令窗口,切换到java文件的目录,使用 javac 命令,执行 javac xxx.java 把.java文件编译成...结语 实际上JVM执行字节码文件远比这复杂,其中还包括即时编译器、指令重排等优化。这里只是对Java程序执行过程做一个大致的介绍,让Java程序员能够明白自己写的程序在JVM里到底是如何执行的。

    2.1K40

    程序执行的本质

    程序执行的本质 程序执行的过程:代码区的指令不断执行,驱使动态数据区和静态数据区产生数据变化。 这一过程需要计算机的管控。下面我们着重介绍对代码区和动态数据区的管控。...对代码区和动态数据区的管控 其中eip永远指向代码区将要执行的下一条指令,它的管控方式有两种,一种是“顺序执行”,即程序执行完一条指令后自动指向下一条执行;另一种是跳转,也就是执行完一条跳转指令后跳转到指定的位置...初始情景: eip指向main函数的第一条指令,此时程序还没有运行,栈空间里还没有数据,ebp和esp指向的位置是程序加载时内核设置的(详情请看《Linux内核设计的艺术》一书)。...ESP寄存器存放当前线程的栈顶指针; EBP寄存器中保存当前线程的栈底指针; call main下面的一条指令地址EIP(也称返回地址)寄存器; 程序开始执行main函数第一条指令,eip自动指向下一条指令...第一条指令的执行,致使ebp的地址值被保存在栈中,保存的目的是本程序执行完毕后,ebp还能返回现在的位置,复原现在的栈。随着ebp地址值的压栈,esp自动向栈顶方向移动,它将永远指向栈顶。

    86910

    JVM是如何执行Java程序的(串联JVM面试题)

    众所周知,高级编程语言编写的程序,最终要转化为机器码,才可以在计算机上运行。我们在编写完一段Java代码后,如果想要运行它,需要通过Java编译器,将其编译为JVM认识的字节码文件。...这样的话,Java程序就可以在任何安装了JVM的平台上运行。这就是Java语言一次编写到处运行的跨平台特性。翻译字节码的工作,是由JVM的执行引擎完成。...在程序启动时,解释器可以立即发挥作用,省去编译时间;随着程序运行时间的推移,JIT编译器逐渐发挥作用,将越来越多的热点代码编译为本地机器码,以提高执行效率。Main方法什么时候被执行?...运行时数据区域开始工作执行引擎工作期间,会和运行时数据区域有大量的交互。线程私有的空间调用main方法时,会创建一个线程并在运行时数据区中分配线程私有的空间:栈帧以及程序计数器。...程序计数器初始时会指向第一条指令, 然后随着指令的执行而递增。执行静态变量赋值的指令时,会把整数推送到栈帧中的操作数栈,随后赋值给静态变量。

    16020

    windows下使用graalvmspring native将JAVA程序构建为本地可执行的exe程序

    序 使用graalvm aot编译器将java程序编译为本地机器码,大幅提升性能。...随手建一个空springboot项目玩一下启动速度提升肉眼可见,内存占用也大幅下降 执行JAR包 执行AOT编译的exe 环境准备 虚拟机 GraalVM官网 社区版官方下载地址 本文使用...graalvm-ce-java17-windows-amd64-22.0.0.2 VM下载后解压,与JVM一样,将bin目录配置到环境变量path中 VS构建工具 MSVC生成工具官方下载地址 执行安装选择如图项目...gu install native-image 注:gu.exe在graalvm bin目录下,如果无法执行检查虚拟机环境变量是否正确 执行命令检查 gu list 构建JAVA程序...mvn package即可打包生成exe可执行文件

    2.1K30

    python程序执行的原理

    程序执行的原理: 1.程序执行之前,保存在硬盘中; 2.当要运行一个程序时: 操作系统首先会让cpu把程序复制到内存中; 然后cpu执行内存中的程序代码; 简而言之,程序执行,首先要加载到内存。...python程序执行的原理: python是一门解释性语言,不是编译性语言。解释性语言的特点是需要解释器进行逐行解释代码,没有编译阶段。...编译是指将代码转换成计算机可识别的二进制文件,然后将这些二进制文件链接成可执行文件。...(1)操作系统首先让cpu把python解释器的程序复制到内存中; (2)python解释器语法规则:从上向下让cpu翻译python程序中的代码; (3)cpu负责执行翻译完成的代码; Python解释器有哪些

    43030
    领券