10.运行时数据区概述和线程

1.运行时数据区概述

1.运行时数据区包含下图所示的5个部分。
方法区,栈区,程序计数器,本地方法栈,虚拟机栈。
10.运行时数据区概述和线程
2.运行时数据区的作用:
如下图,class文件被类加载子系统通过加载,链接,初始化三个步骤之后,被加载到了内存中,生成了一个大的Class对象。执行引擎在执行字节码的时候,都需要使用到运行时数据区中数据。同时垃圾回收也会涉及到运行时数据区。
10.运行时数据区概述和线程
3.运行时数据区里面具体的内容图:
虚拟机栈中存放的基本单位是栈帧。每一个方法对应一个栈帧。每个栈帧包含局部变量表,操作栈,动态链接,方法返回地址等。
堆区分为新生代和老年代。
元空间是在JDK8及以后才有的。方法区没有了,变成了元空间。
10.运行时数据区概述和线程
4.如下图所示,运行时数据区中,程序计数器,本地方法栈,虚拟机栈是由线程私有的。堆区和方法区是由线程共享的。
同一个类只会被加载一次。方法区中存储了类的一些信息,当多个线程想要使用同一个类的时候,可以共享存在方法区中的类的信息。
垃圾回收95%发生在堆区,%5发生在方法区。
方法区在jdk8被换成了元空间。
10.运行时数据区概述和线程
5.Runtime类的对象:
每个JVM只有一个Runtime实例,单例模式,称为运行时环境。这个Runtime实例就对应于运行时数据区。
10.运行时数据区概述和线程

2.线程

线程是一个程序里的运行单元。JVM支持多线程,允许一个应用有多个线程并行执行。
10.运行时数据区概述和线程
JVM后台系统线程(了解):
10.运行时数据区概述和线程