深入理解java虚拟机培训ppt
- 格式:pdf
- 大小:1.54 MB
- 文档页数:41
深入理解java虚拟机(一)虚拟机内存划分Java虚拟机在执行Java程序时,会把它管理的内存划分为若干个不同的数据区。
这些区域有不同的特性,起不同的作用。
它们有各自的创建时间,销毁时间。
有的区域随着进程的启动而创建,随着进程结束而销毁,有的则始终贯穿虚拟机整个生命周期。
Java虚拟机运行时内存区域主要分为七部分,分别是:程序计数器,Java虚拟机栈,本地方法栈,方法区,Java堆,运行时常量池,直接内存。
如上图所示(图片来源于网络):蓝色区域包裹的部分为运行时几个数据区域:白色的部分为线程私有的,既随着线程的启动而创建。
每个线程都拥有各自的一份内存区域。
它们是:JAVA栈(JAVA STACK),本地方法栈(NATIVE METHOD STACK),和程序计数器(PROGRAM COUNTER REGISTER)。
黄色部分是线程共享的,所有的线程共享该区域的内容。
他们是:方法区(METHOD AREA),堆(HEAP)。
我们分别来介绍这些区域。
(1)程序计数器(program counter register)学过计算机组成原理的都知道计算机处理器中的程序计数器。
当处理器执行一条指令时,首先需要根据PC中存放的指令地址,将指令由内存取到指令寄存器中,此过程称为“取指令”。
与此同时,PC中的地址或自动加1或由转移指针给出下一条指令的地址。
此后经过分析指令,执行指令。
完成第一条指令的执行,而后根据PC取出第二条指令的地址,如此循环,执行每一条指令。
处理器的程序计数器是指寄存器,而java程序计数器是指一小块内存空间。
java代码编译字节码之后,虚拟机会一行一行的解释字节码,并翻印成本地代码。
这个程序计数器盛放的就是当前线程所执行字节码的行号的指示器。
在虚拟机概念模型中,字节码解释器工作室就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支,循环,跳转,异常处理等都依赖于它。
Java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式实现的,因此为了线程切换后还能恢复执行位置,每条线程都需要一个独立的程序计数器。
深入剖析Java虚拟机Java虚拟机(JVM)是Java语言的核心组成部分,在Java开发中具有重要作用。
JVM是一种可以将Java字节码转换为机器语言的虚拟计算机,可以在各种平台上运行Java程序。
在本文中,将深入剖析Java虚拟机的工作原理及其在Java开发中的应用。
JVM的基本组成在了解JVM的工作原理之前,我们需要了解JVM的基本组成。
JVM主要由以下几个组成部分组成:类装载器:在Java程序运行时,JVM会将类文件加载到内存中,然后对其进行解析。
类装载器主要负责将类文件从磁盘读取到内存中,并完成对类的解析、验证和初始化。
执行引擎:执行引擎是JVM中最重要的组成部分。
它是负责执行Java字节码的核心组件。
执行引擎包含了解释器和即时编译器两种不同的执行方式。
解释器负责读取字节码,并将其翻译为机器语言执行。
而即时编译器则会将字节码直接编译成本地机器代码,从而提高程序的执行速度。
垃圾回收器:JVM内部有一个垃圾回收器,负责回收不再使用的内存空间。
当一个对象不再被引用时,垃圾回收器会在适当的时间回收这个对象所占用的内存空间,从而避免了内存泄漏和内存溢出的问题。
运行时数据区:运行时数据区是JVM管理内存的重要组成部分,也是Java 与其它编程语言最大的区别。
Java程序运行时,JVM会根据程序的需求,将内存分为一些不同的区域,包括方法区、堆区、虚拟机栈、本地方法栈和程序计数器等。
Java虚拟机的工作原理JVM的工作原理主要分为以下几个步骤:1、类加载:Java程序运行时,JVM会根据类的名称从磁盘读取对应的.class 文件,并将其加载到内存中。
这个过程由类装载器完成,类装载器负责将类文件的内容读取到内存中。
2、字节码解析:对于每一个已加载到内存中的类,JVM会将其字节码解析为JVM的指令集。
这个过程包括语法分析、语义分析等步骤,确保类文件的正确性。
3、执行JVM指令:执行引擎读取并处理JVM指令集,将其转换为本地机器代码并执行。