美文网首页
JVM-运行时数据区

JVM-运行时数据区

作者: ssttIsme | 来源:发表于2024-01-05 17:40 被阅读0次

运行时数据区有五个部分:本地方法栈、虚拟机栈、程序计数器、堆和方法区。

Java虚拟机定义了若干程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机(对应一个进程)的启动而创建,随着虚拟机的退出而销毁。另外一些则是与线程一一对应的,这些与线程对应的数据区会随着线程开始和结束而创建和销毁。

▶每个线程各自拥有:程序计数器、虚拟机栈、本地方法栈
▶线程间共享:堆、方法区(堆外内存)【永久代或元空间、代码缓存】

堆空间和方法区是共用的,所以涉及线程安全问题。JVM优化重点优化堆空间也包括方法区。
一个JVM实例对应一个Runtim实例,相当于一个运行时数据区。(每个JVM只有一个Runtime实例)

线程是一个程序里的运行单元。JVM允许一个应用有多个线程并行执行。
在Hotspot VM里,每个线程都与操作系统的本地线程直接映射。当一个Java线程准备好执行以后(程序计数器、栈结构、缓存分配、本地存储的准备工作),此时一个操作系统的本地线程也同时创建。Java线程执行终止后,本地线程也会回收。
操作系统负责所有线程的安排调度到任何一个可用的CPU上。一旦本地线程初始化成,它就会调用Java线程中的run()方法,如果执行run()方法过程中出现了未捕获的异常,会导致Java线程终止,本地线程来决定JVM到底要不要终止(判断当前线程是不是最后一个非守护线程,如果是则退出JVM)。

相关文章

  • JVM-运行时数据区

    Java虚拟机在执行Java程序时会把它管理的内存区域划分为若干不通的区域。这些区域有各自的用途,以及创建、销毁时...

  • JVM-运行时数据区

    Java字节码是在jre中运行的,JVM是jre的核心组成成分承担着字节码的解释和执行工作。JVM主要包含3个部分...

  • 02 | JVM-运行时数据区

    所有的java代码无非分三种类型(数据,控制,指令),如下图所示 程序计数器【指令类型】 因为线程的执行是通过cp...

  • JVM-运行时数区

    Runtime data area by shihang.mai 区域备注线程私有/所有线程sharePC程序计数...

  • 《深入理解Java虚拟机-JVM高级特性与最佳实践》学习总结(第

    一、运行时数据区 JVM将我们机器上的内存当做一个运行时数据区来进行处理。该运行时数据区包括以下几个部分: 方法区...

  • 线程在JVM中的运行原理

    。线程在启动运行时,主要是在运行时数据区(JVM的内存模型),而JVM的运行时数据区主要包括堆,方法区,Java栈...

  • JVM-006-运行时数据区

    一、运行时数据区  运行时数据区是由6个部分组成的Method Area 方法区、VM Stacts 虚...

  • 《深入java虚拟机》-内存区域与内存溢出异常

    一、运行时数据区域 1. java内存区模型 注 :1. 绿色方框的数据区由所有线程共享2. 运行时数据区的白色区...

  • jvm 运行时数据区-01

    jvm 运行时数据区 jvm 运行时数据区 ,将内存划分为5个区域,java 代码在运行时 类里面的 组成部分 分...

  • JVM Run-Time Data Areas & 参数相关

    jvm定义了各个运行时数据区: 运行时数据区: <=== 是一个规范,内存结构是一个实现1)部分运行时数据区域是在...

网友评论

      本文标题:JVM-运行时数据区

      本文链接:https://www.haomeiwen.com/subject/fqsyndtx.html