加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

JVM运行机制及其原理

发布时间:2020-12-15 05:23:50 所属栏目:Java 来源:网络整理
导读:JVM运行机制及其原理 JVM: JVM是Java Virtual Machine(Java虚拟机)的缩写.Java虚拟机主要由字节码指令集、寄存器、栈、垃圾回收堆和存储方法域等构成。 JVM生命周期 : JVM伴随着Java程序的开始而开始,程序的结束而结束,一个Java程序会开启一个JVM进程,

JVM运行机制及其原理

JVM:JVM是Java Virtual Machine(Java虚拟机)的缩写.Java虚拟机主要由字节码指令集、寄存器、栈、垃圾回收堆和存储方法域等构成。

JVM生命周期JVM伴随着Java程序的开始而开始,程序的结束而结束,一个Java程序会开启一个JVM进程,一台计算器上可以运行多个JVM进程。

JVM将线程分为两种:守护线程和普通线程。守护线程是JVM 自己使用的线程,比如垃圾回收(GC)就是一个守护线程。 普通线程一般是Java程序的线程,只要JVM中有普通线程在执行,那么JVM就不会停止。

JVM内存模型组成JVM内存模型主要由堆内存、方法区、程序计数器、虚拟机栈和本地方法栈组成。如下图:

?

?

其中,堆和方法区是所有线程共有的,而虚拟机栈,本地方法栈和程序计数器则是线程私有的。

java堆

《深入理解java虚拟机》中描述对堆的描述

所有的对象实例都存放在堆中。

1.Java1堆(Java Heap)是java虚拟机所管理的内存中最大的一块

2.java堆被所有线程共享的一块内存区域

3.虚拟机启动时创建java堆

4.java堆的唯一目的就是存放对象实例。

5.java堆是垃圾收集器管理的主要区域。

6.从内存回收的角度来看, 由于现在收集器基本都采用分代收集算 法, 所以Java堆可以细分为:新生代(Young)和老年代(Old)。 新生代又被划分为三个区域Eden、From Survivor, To Survivor 等。无论怎么划分,最终存储的都是实例对象, 进一步划分的目 的是为了更好的回收内存, 或者更快的分配内存。

7.java堆的大小是可扩展的, 通过-Xmx和-Xms控制。

8.如果堆内存不够分配实例对象, 并且对也无法在扩展时, 将会抛出outOfMemoryError异常。

java方法区

方法区与Java堆一样,是各个线程共享的区域,它用于存储已被虚拟机加载的类信息,常量,静态变量,即时编译(JIT)后的代码等数据。

由于程序中所有的线程共享一个方法区,所以访问方法区的信息必须确保线程是安全的。如果有两个线程同时去加载一个类,那么只能有一个线程被允许去加载这个类,另一个必须等待。

在程序运行时,方法区的大小是可以改变的,程序在运行时可以扩展。同时,方法区里面的对象也可以被垃圾回收,但条件非常严苛,必须在该类没有任何引用的情况下才能被GC回收。

本地方法栈

栈作为一种线性的管道结构,遵循先进后出的原则。主要用于存储本地方法的局部变量表,本地方法的操作数栈等信息。当栈内的数据在超出其作用域后,会被自动释放掉。

本地方法栈是在程序调用或JVM调用本地方法接口(Native)时候启用。

Java类加载机制

什么是类加载

众所周知,JVM加载的是.class文件。其实,类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。

同时,JVM规范允许类加载器在预料某个类将要被使用时就预先加载它,如果在预先加载的过程中遇到了.class文件缺失或存在错误,类加载器会在程序首次主动使用该类时会生成错误报告(LinkageError错误),如果这个类一直没有被程序主动使用,那么类加载器就不会报告错误。

当程序主动使用某个类时,如果该类还未被加载到内存中,则JVM会通过加载、连接、初始化3个步骤来对该类进行初始化。如果没有意外,JVM将会连续完成3个步骤,所以有时也把这个3个步骤统称为类加载或类初始化。

?

?

GC垃圾回收是对方法区、堆、本地方法栈的回收

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读