首页 > 编程语言 > 详细

Java 虚拟机

时间:2020-09-11 09:38:52      阅读:58      评论:0      收藏:0      [点我收藏+]

https://www.bilibili.com/video/BV1yE41187A3?p=2

JDK、JRE、JVM

技术分享图片
JDK
Java Development ToolKit(Java开发工具包),包括了JRE,一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)
JRE
Java Runtime Enviromental(java运行时环境),与JDK相比,它不包含开发工具——编译器、调试器和其它工具,如javac
JVM
Java Virtual Mechinal(JAVA虚拟机),JVM是JRE的一部分,JVM 的主要工作是解释自己的指令集(即字节码)并映射到本地的 CPU 的指令集或 OS 的系统调用

Java 跨平台与C/C++的区别

  • c/c++: 源码跨平台,不同平台需要重新编译
  • Java:字节码跨平台,一次编译在不同平台只需要安装jvm即可运行字节码

JVM生命周期

  • 启动
    启动一个Java程序时,一个JVM实例就产生了,任何一个拥有public static void main(String[] args)函数的class都可以作为JVM实例运行的起点
  • 运行
    main()作为该程序初始线程的起点,任何其他线程均由该线程启动。JVM内部有两种线程:守护线程和非守护线程,main()属于非守护线程,守护线程通常由JVM自己使用,java程序也可以标明自己创建的线程是守护线程
  • 销毁
    当程序中的所有非守护线程都终止时,JVM才退出

JVM体系结构

类加载器

装载.class文件

执行引擎

执行字节码,或者执行本地方法

运行时数据区域

技术分享图片
虚拟机栈
虚拟机栈是Java方法执行的内存模型,每个方法在执行的同时都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息
本地方法栈
和虚拟机栈区别是虚拟机栈为虚拟机执行 Java 方法(也就是字节码)服务,而本地方法栈则为虚拟机使用到的 Native 方法服务
gc堆
Java 堆(Java Heap)是 Java 虚拟机所管理的内存中最大的一块。Java 堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例
方法区
方法区(Method Area)用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据
程序计数器
程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器,为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器

Java 虚拟机

原文:https://www.cnblogs.com/xiongyungang/p/13649276.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!