• 【JVM】虚拟机初见-运行时数据区图解


    本文是听咕泡XX公开课视频整理的笔记,较书本更为总结,感谢。

    计算机模型(汇编知识):数据集(数据)、指令集(操作指令,+-等)、控制集(分支循环)

     

     

     

    JVM运行时的数据区:


    程序计数器(每个线程都有):

    定义:存储指向当前线程正在运行的指令的地址、行号(用来记录线程切换后寻回地址)

    执行native方法时程序计数器记录为空。

     

    虚拟机栈(栈的大小不会被限制,XXS代表栈的深度):

    定义:指向当前线程运行方法时所需要的数据、指令、返回地址。

     

    线程执行方法时,需要出栈入栈,(一个栈是一条线程运行时需要的数据结构)。单位:栈帧(可以理解为一个方法)。栈的深度表示一个栈中可以放多少栈帧(stack:先进后出,方法的压栈(图))

    下图:


    本地方法栈:native修饰的方法,这里没讲。

     

    补充:指令区的包括程序计数器、虚拟机栈,本地方法栈,都是在一个线程中的,线程安全的。简单说就是每个线程都有自己的。

     

     

    方法区:类信息、常量、静态变量、JIT(即时编译的一些代码。如动态代理即时生成的类信息)

    堆:成员变量、对象实例(静态的变量会指向方法区内的地址,所以说静态变量是全类共享的)。


     
     
  • 相关阅读:
    数据库乐观锁应用
    maven 引入本地jar
    GTS 分布式事务
    redis 做冥等
    服务器 启动命令
    pgAdmin4的应用
    PostgreSQL 分区
    压测工具
    BigDecimal 比较大小
    移动端px转化为rem
  • 原文地址:https://www.cnblogs.com/the-fool/p/11054197.html
Copyright © 2020-2023  润新知