美文网首页
关于JVM内存区域组成

关于JVM内存区域组成

作者: qingwenLi | 来源:发表于2019-06-05 19:02 被阅读0次

一、前言

       虚拟机的原理对于每个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程序的执行流程:

    Java执行流程.png 如图所示,首先源代码文件(.java)会被java的编译器编译为字节码(.class)文件,然后由JVM的类加载器(ClassLoader)加载各个类的字节码文件。加载完毕之后,交由执行引擎(ExecutionEngine)执行,在执行的过程中所产的数据(内存模型)便是由运行时数据区(Runtime data area) 内部的若干个不同的数据区域进行分配、创建、销毁等一系列操作。 本文主要是针对运行时数据区(Runtime data area)进行讲解。
  • 内存区域(Runtime data area)

等待更新.....

相关文章

网友评论

      本文标题:关于JVM内存区域组成

      本文链接:https://www.haomeiwen.com/subject/tvssxctx.html