https://www.bilibili.com/video/BV1yE41187A3?p=2
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 的系统调用
装载.class文件
执行字节码,或者执行本地方法
虚拟机栈
虚拟机栈是Java方法执行的内存模型,每个方法在执行的同时都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息
本地方法栈
和虚拟机栈区别是虚拟机栈为虚拟机执行 Java 方法(也就是字节码)服务,而本地方法栈则为虚拟机使用到的 Native 方法服务
gc堆
Java 堆(Java Heap)是 Java 虚拟机所管理的内存中最大的一块。Java 堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例
方法区
方法区(Method Area)用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据
程序计数器
程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器,为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器
原文:https://www.cnblogs.com/xiongyungang/p/13649276.html