JDK、JRE与JVM

JDK、JRE、JVM的关系

JDK:Java Development Kit
JRE:Java Runtime Environment
JVM:Java Virtual Machine
在这里插入图片描述

JDK目录下文件(以jdk1.8.0为例)

在这里插入图片描述

文件作用
bin包含一些用于开发java的工具。如编译工具javaw.exe,运行工具java.exe,打包工具jar.exe。
db纯java开发的关系数据库。
includeC语言的头文件,用于支持java程序设计。
jrejava运行时环境的根目录。
—bin包含java平台所使用工具和类库的可执行文件和dll。
—libjava运行时环境所使用的核心类库
libJDK工具命令的实际执行程序。(即bin中绝大部分命令运行的是lib中程序)
COPYRIGHT版权
javafx-src.zipJavaFX脚本是一种声明式、静态类型编程语言
LICENSE许可证
README.html信息说明
release发布版本
src.zip归档的java源代码
THIRDPARTYLICENSEREADME.txt第三方许可证信息
THIRDPARTYLICENSEREADME-JAVAFX.txtJavaFX的第三方许可证信息

编译流程

在这里插入图片描述
(1)Java代码编译是由Java源码编译器来完成,也就是Java代码到JVM字节码(.class文件)的过程。 流程图如下所示:
在这里插入图片描述
(2)Java字节码的执行是由JVM执行引擎来完成,流程图如下所示:
在这里插入图片描述

JVM组成

在这里插入图片描述

线程独有的区域,存放局部变量。

public class Math{
	public static int initData = 666;
	public static User user = new User();
	public int compute(){
		int a=1;
		int b=2;
		int c=a+b;
		return c;
	}
	public static void main(String[] args){
		Math math = new Math();
		math.compute();
		System.out.println("test");
	}
}

以上述代码为例:
在这里插入图片描述
栈帧的基本组成:
在这里插入图片描述

程序计数器

      是线程独有的区域,每个线程都会分配程序计数器的内存,用来存放当前线程正在运行或者即将要运行的jvm指令码对应的地址,或者说行号位置。
      在多线程之间的切换,当一个程序被挂起时,总要恢复的,通过程序计数器解决恢复到哪个位置的问题。

方法区

存放常量、静态变量、类元信息。
在这里插入图片描述
在这里插入图片描述

本地方法栈

      使用较少。每个线程在运行的时候,如果有运行到本地方法,必然要产生局部变量等,就需要存储在本地方法栈。如果没有本地方法,也就没有本地方法栈了。

在这里插入图片描述
在这里插入图片描述
(new出来的对象存在于Eden区)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值