美文网首页
Ⅲ、运行时数据区

Ⅲ、运行时数据区

作者: 唐騦忆 | 来源:发表于2020-02-10 12:37 被阅读0次

一、概述

运行时数据区
1.8后运行时数据区
线程与进程独立
jvm线程与cpu线程

二、程序计数器(PC寄存器)

简介

详细作用

程序计数器作用
问题一
问题二
注意:

并行:同一时间可以同时执行多个线程,区别于串行;
并发:同一时间内只有一个线程在执行,cpu一个核在多个线程之间切换,交替执行。

三、虚拟机栈


堆和栈
基本内容
特点
虚拟机栈异常

StackOverFlow经常在递归中出现。


设置虚拟机栈内存大小

栈帧

栈运行
栈帧的组成

3.1 局部变量表


局部变量与栈帧,栈

使用jclasslib可以查看class文件信息


jclasslib

slot
slot重复利用

成员变量中类变量会在链接中赋默认值,初始化中赋给定值;实例变量会在对象创建时在堆空间分配实例变量空间并赋默认值。
局部变量必须显式赋值,否则编译不通过。


补充

3.2 操作数栈

定义

作用

局部变量表相当于元件库,操作数栈相当于工作区元件,执行引擎只对操作数栈进行操作。


栈顶缓存技术

3.3 动态链接

定义

为什么需要常量池:
为了减小字节码文件大小,将符号等常量信息都保存在方法区的运行时常量池中,使用间接引用替代。


方法的调用

方法的绑定
判断依据
调用指令

invokedynamic
重写的本质

重写方法调用

3.4 方法返回地址


方法返回地址

3.5 附加信息

附加信息

3.6 虚拟机栈面试题


针对局部变量是线程安全的,只能单线程操作;成员变量或main方法里的变量是非线程安全的,可以多线程操作,产生并发冲突

四、堆

4.1 构成

堆构成

YGC->FGC->OOM
JDK8永久代更换为元空间。


YGC
from与to交换

元空间
堆调优
元空间

堆内存默认起始占物理内存1/64,最大占物理内存1/4。


获取jvm堆内存
调优:
1.-Xms与-Xmx相同,避免JVM与GC争抢内存,峰值忽高忽低。
具体设置

五、方法区

六、本地方法栈

相关文章

  • 《深入理解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内存区域小结

    1. 运行时数据区(Runtime Data Area) 当类被加载入方法区时,就已经开始使用运行时数据区了。根据...

  • JVM学习笔记

    JVM 注意:0、JVM运行时数据区和JVM内存模型不要搞混1、运行时数据区可以分为:堆、方法区、虚拟机栈、本地方...

  • JVM

    jvm学习分为四部分 运行时数据区 类加载器 类加载过程 垃圾回收 本地接口 运行时数据区 (1)线程私有区: 程...

  • Java虚拟机02-JVM运行时数据区

    1 JVM运行时数据区 JVM运行时数据区(JVM Runtime Area)其实就是指JVM在运行期间,其对计算...

网友评论

      本文标题:Ⅲ、运行时数据区

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