一、前言
虚拟机的原理对于每个JAVA开发人员来说都是至关重要的一个环节,不了解虚拟机的运行机制就意味着不能对系统进一步的做性能优化,同时也无法做到对高并发等问题的考虑。增加了系统运行栈溢出及内存泄漏的风险。
二、JVM生命周期
-
JVM的诞生
当启动一个Java程序时,一个JVM就诞生了。任何一个拥有 main(String[] args) class都可以作为JVM的启点。 -
JVM 运行
main(String[] args)作为该程序的线程启动,任何其他线程均由该线程启动。JVM内部有两种线程【守护线程】 【非守护线程】,main属于非守护线程,守护线程通常由JVM自己使用,Java也可以标明自己所创建的线程为守护线程。 -
JVM 消亡
当Java程序所有【非守护线程】均退出以后,JVM才会退出。若安全管理器允许,程序也可以通过 java.lang.System 以及 java.lang.Runtime 类来退出。
二、JVM内存区域组成
-
Java执行流程
Java执行流程.png 如图所示,首先源代码文件(.java)会被java的编译器编译为字节码(.class)文件,然后由JVM的类加载器(ClassLoader)加载各个类的字节码文件。加载完毕之后,交由执行引擎(ExecutionEngine)执行,在执行的过程中所产的数据(内存模型)便是由运行时数据区(Runtime data area) 内部的若干个不同的数据区域进行分配、创建、销毁等一系列操作。 本文主要是针对运行时数据区(Runtime data area)进行讲解。
首先,我们先看一下Java程序的执行流程: -
内存区域(Runtime data area)
等待更新.....
网友评论