JVM了解

java程序运行流程草图

java程序运行流程草图

说明:.java编译成面向jvm的class文件,供jvm解释执行

JVM结构

JVM的结构主要分为三部分(http://www.androidchina.net/5774.html

  • 类加载器,用于加载.class
  • 执行引擎,用于执行字节码或者本地方法
  • 运行时数据区,方法区、java堆、java虚拟机栈、PC寄存器、本地方法区

类加载器

把一个类(.class)文件从磁盘加载到内存
包含:AppClassLoader,ExtClassLoader,BootStrapClassLoader
采用双亲委派机制进行加载,如需加载自定义class,则需要自定义ClassLoader,默认父ClassLoader指向AppClassLoader
[图片上传失败...(image-ec704-1512463265949)]

运行时数据区

PC寄存器:也叫程序计数器,当前线程执行的字节码信号指示器。线程私有

java虚拟机栈:每个方法被执行的时候都会创建一个栈帧,用于存储局部变量表,操作数栈,动态链接,方法出口等信息。线程私有

java堆:供所有类实例和对象分配内存等区域。在虚拟机启动的时候创建,被垃圾回收器管理。线程共享

方法区:存储了每一个被加载的类的结构信息和一些类,实例,接口被初始化的方法。线程共享

本地方法区:存放native方法数据信息。线程私有

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,764评论 18 399
  • JVM内存模型Java虚拟机(Java Virtual Machine=JVM)的内存空间分为五个部分,分别是: ...
    光剑书架上的书阅读 2,572评论 2 26
  • 这篇文章解释了Java 虚拟机(JVM)的内部架构。下图显示了遵守Java SE 7 规范的典型的 JVM 核心内...
    饮墨飨书阅读 713评论 0 1
  • 0、前言 读完本文,你将了解到: 一、为什么说Jabalpur语言是跨平台的 二、Java虚拟机启动、加载类过程分...
    vivi_wong阅读 1,267评论 0 10
  • 看过篇报道,日本富豪死前调查,成功最大的因素是什么,最后得出是野心。是的,今天的盟迦虽然小,但是我一直很有野心。我...
    淡尽相思阅读 260评论 0 0