2.JVM运行机制 -- JVM序列

上一次写了1.初步认识JVM -- JVM序列,今天接着记录写JVM的运行机制。

一、JVM启动流程

Java平台包括JVM以及Java语言,其中JVM也是运行在操作系统中的一个应用程序进程,那么也应该有自己的生命周期以及内存空间。一般情况下java或javac命令执行过程大概如下:

  • 输入java(javac)命令
  • 装载环境以及配置(根据当前路径和系统版本寻找jvm.cfg)
  • 根据配置寻找定位并加载JVM.DLL
  • 初始化JVM获得JNIEnv接口
  • 找到main方法

注意在装载环境以及配置中首先查找jre路径再装载JVM.cfg;之后定位调用系统API加载JVM.dll,至于具体的代码执行流程可以看看csdn的这篇文章更齐全。

二、JVM基本结构

这个基本结构我从网上爬了张图查看这样比较清楚,如下:

  • 这其中方法区一般是保存装载的类信息:类型的常量池;字段、方法信息;方法字节码(String常量在JDK1.7之后移动堆中)。
  • java堆应该说是和程序开发最密切相关的区域了,这保存了系统对象凡是new创建的都存储在堆中,不像栈是线程私有的,这堆是所有线程共享,特别需要留意的是GC有分代那么堆也是有分代的。
  • java栈上面说的是线程私有,栈的空间对于堆来说一般比较小因此存放大对象或数量多是不行的,每次调用方法都会创建一个帧并压栈随后分配栈空间,同时也会拥有一个PC寄存器保存下一条指令的地址(本地方法有区别),存在多个帧时遵循先进后出的原则,这个帧保存了方法的局部变量,操作数栈(java中不存在寄存器概念),常量池等信息,关于局部变量这里需要记住局部变量表中静态方法跟实例方法的区别,举例如下:
  1. public static int runStatic(int i,long l,float f,Object o,byte b){}
  2. 局部变量表:int i,long l,float f,Object o,byte b
  3. public int runInstance(char c,short s,boolean b){}
  4. 局部变量表:reference this,char c,short s,boolean b
  5. 注意:最少4个字节32位,int:32位;float:64位;Object:32位。
  • 堆、栈、方法区交互:关于这个交互图我就直接截图了视频的这样看更清晰,如下

    这次先到这里。坚持记录点点滴滴!

时间: 2024-10-02 18:02:00

2.JVM运行机制 -- JVM序列的相关文章

深入JVM虚拟机(二) JVM运行机制

深入JVM虚拟机(二) JVM运行机制 1 JVM运行机制 1.1 JVM启动流程 JVM是Java程序运行的环境,同时是一个操作系统的一个应用程序进程,因此它有自己的生命周期,也有自己的代码和数据空间.JVM工作原理和特点主要是指操作系统装入JVM,是通过jdk中Java.exe来完成通过下面4步来完成JVM环境. 1.创建JVM装载环境和配置. 2.装载JVM.dll. 3.初始化JVM.dll并挂界到JNIENV(JNI调用接口)实例. 4.调用JNIEnv实例装载并处理class类. J

【转载】Java JVM 运行机制及基本原理

原博地址:https://zhuanlan.zhihu.com/p/25713880 JVM的基础概念 JVM的中文名称叫Java虚拟机,它是由软件技术模拟出计算机运行的一个虚拟的计算机. JVM也充当着一个翻译官的角色,我们编写出的Java程序,是不能够被操作系统所直接识别的,这时候JVM的作用就体现出来了,它负责把我们的程序翻译给系统"听",告诉它我们的程序需要做什么操作. 我们都知道Java的程序需要经过编译后,产生.Class文件,JVM才能识别并运行它,JVM针对每个操作系统

JVM运行机制

JVM启动流程 JVM基本结构 PC寄存器 –-每个线程拥有一个PC寄存器 –-在线程创建时 创建 –-指向下一条指令的地址 –-执行本地方法时,PC的值为undefined 方法区 –-保存装载的类信息 •类型的常量池 •字段,方法信息 •方法字节码 –-通常和永久区(Perm)关联在一起 Java堆 –-和程序开发密切相关 –-应用系统对象都保存在Java堆中 –-所有线程共享Java堆 –-对分代GC来说,堆也是分代的 –-GC的主要工作区间 Java栈 –-线程私有 –-栈由一系列帧组成

jvm运行机制与内存管理

http://blog.csdn.net/lengyuhong/article/details/5953544 http://www.cnblogs.com/nexiyi/p/java_memory_model_and_thread.html 性能监测工具:http://blog.csdn.net/wisgood/article/details/25343845

2 JVM 运行机制

原文地址:https://www.cnblogs.com/likevin/p/10186591.html

java学习-----jvm的内存分配及运行机制

VM运行时数据区域: 根据<Java虚拟机规范(第二版)>的规定,JVM包括下列几个运行时区域: 我们思考几个问题: 1.jVM是怎么运行的? 2.JVM运行时内存是怎么分配的? 3.我们写的java代码(类,对象,方法,常量,变量等等)最终存放在哪个区? VM运行时数据区域: 1.程序计数器(program Counter Register):   是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器.在虚拟机的概念模型里(仅是概念模型,各种虚拟机可能会通过一些更高效的

java基础---JVM内存管理以及内存运行机制学习总结

自己从网上搜资料拼接了一张JVM内存图:如下图所示: 我们思考几个问题: 1.jVM是怎么运行的? 2.JVM运行时内存是怎么分配的? 3.我们写的java代码(类,对象,方法,常量,变量等等)最终存放在哪个区? VM运行时数据区域: 1.程序计数器(program Counter Register):   是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器.在虚拟机的概念模型里(仅是概念模型,各种虚拟机可能会通过一些更高效的 方式去实 现),字节码解释器工作时就是通过改

Java基础8-浅谈java程序的运行机制与JVM运行

一.java程序的运行机制 Java开发的整个生命周期,可以概括为两个阶段:编译阶段和运行阶段. 1.编译阶段 ①程序员编写一个符合java语法的xx.java的源文件. ②使用javac.exe命令对以上的java源程序进行编译. ③若编译通过则生成一个xxx.class文件. 2.运行阶段 ①打开命令窗口,在命令窗口中使用java.exe命令运行java程序. 二.java虚拟机运行 如上图所示,java文件解释执行时会启动JVM(java虚拟机)来给程序划分内存区域并转换成计算机系统可以识

什么是JVM?一文简谈运行机制及基本原理!

JVM的基础概念 JVM的中文名称叫Java虚拟机,它是由软件技术模拟出计算机运行的一个虚拟的计算机. JVM也充当着一个翻译官的角色,我们编写出的Java程序,是不能够被操作系统所直接识别的,这时候JVM的作用就体现出来了,它负责把我们的程序翻译给系统"听",告诉它我们的程序需要做什么操作. 我们都知道Java的程序需要经过编译后,产生.Class文件,JVM才能识别并运行它,JVM针对每个操作系统开发其对应的解释器,所以只要其操作系统有对应版本的JVM,那么这份Java编译后的代码