美文网首页
(夜食)Java运行时数据区结构

(夜食)Java运行时数据区结构

作者: WebGis学习笔记 | 来源:发表于2019-08-19 10:24 被阅读0次

Java运行时数据区结构

-(A)PC寄存器/程序计数器(每个线程有一个独立的程序计数器,且互不影响,独立储存)

  • (a)保存当前正在执行的程序的内存地址。
  • (B)Java栈 Java Stack(每条线程对应一个栈,一个栈中对应多个栈帧,执行一个方法压入一个栈帧,结束一个方法出一个栈帧)

    -
  • (a)栈帧是每个方法关联起来的,每运行一个方法就创建一个栈帧,每个栈帧会含有一些局部变量,每当一个方法执行完成时,该栈帧就会弹出这个栈帧的元素作为这个方法的返回值,并清除这个栈帧。
    - (b)Java栈顶的栈帧就是当前执行的活动栈,也就是正在执行的方法,PC寄存器会指向该地址
    - (c)栈帧的结构:局部变量表,操作数栈,动态连接方法,返回的地址
    • (C)堆 Heap(堆时JVM所管理的内存中最大的一块,被所有的Java线程锁共享,不是线程安全的,在JVM启动时创建)
      • (a)所有对象实例以及数组都要在堆上分配。
      • (b)Java堆时GC管理的主要区域,现在GC基本都采用分代收集算法,所有堆还可以细分为:新生代和老年代新生代再细致一点有Eden空间,From Survivor空间,To Survivor空间`等。
    • (D)方法区Method Area(方法区存放了要加载类的信息(名称,修饰符等)类中定义为静态常量,类中的Field信息,类中的方法信息,方法区是被Java线程共享的
      • (a)方法区数据虽然时被线程共享,但是不会像Java堆一样被GC频繁回收,它储存的信息相对比较稳定,再一定条件下会被GC
    • (E)常量池Constant Pool(常量池本身是方法区的一个数据结构。
      • (a)常量池中储存了如字符串,final变量值,类名和方法名变量值。常量池在编译期间就被确定,并保存在已编译的。class文件中。
    • (F)本地方法栈Native Method Stack(本地方法栈和Java栈所发挥的作用非常相似,区别不过是Java栈为JVM执行Java方法服务,而本地方法栈为JVM执行Native方法服务。本地方法栈也会抛出StackOverflowError和OutOfMemoryError异常。)

相关文章

  • (夜食)Java运行时数据区结构

    Java运行时数据区结构 -(A)PC寄存器/程序计数器(每个线程有一个独立的程序计数器,且互不影响,独立储存) ...

  • Java虚拟机内存模型

    章节 JVM结构 运行时数据区(Java run time data area)方法区-线程共享堆区 -线程共享J...

  • Android 性能优化-Java虚拟机运行时数据区域结构

    Java虚拟机运行时数据区域结构 Java虚拟机运行时数据区域分为两部分,一部分是私有区一部分是共享数据区。 线程...

  • Java内存结构

    Java内存结构是指Java运行时数据区,包括方法区、堆、Java虚拟机栈、本地方法栈、程序计数器,如下图 1.方...

  • 深入理解java虚拟机读书笔记(1): jvm内存结构和常见内存

    1.java运行数据区域结构   java运行时数据区域主要分为:程序计数器,虚拟机栈,native方法栈,方法区...

  • JVM

    JVM虚拟机运行时数据区(每个区都存储什么信息) JAVA7和JAVA8的运行时数据区JAVA7:虚拟机栈/本地方...

  • Java方法执行过程

    运行时数据区 Java 运行时数据区共分为以下几个部分:程序计数器、Java 虚拟机栈、本地方法栈、Java堆和方...

  • 线程安全之可见性问题

    Java内存模型 VS JVM运行时数据区 首先Java内存模型(JMM)和JVM运行时数据区并不是一个东西,许多...

  • JVM_运行数据区

    JAVA的运行时数据区,老生常谈。 我们常说的JAVA的运行时数据区包括:程序计数器、虚拟机栈、本地方法栈、方法区...

  • 线程在JVM中的运行原理

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

网友评论

      本文标题:(夜食)Java运行时数据区结构

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