美文网首页
JVM内存管理-运行时数据区

JVM内存管理-运行时数据区

作者: Dalvik_ | 来源:发表于2021-08-12 15:35 被阅读0次

1.JVM是一种规范和运行时数据区
java程序运行过程


java程序运行过程.png

源码-> Java->.class->JVM ->ClassLoader
解释执行:
JVM C++写的 C++解释器
经过JVM的翻译,速度相对慢一点

JIT执行(hotspot):
java代码 翻译成 汇编 (机器码) 放到codcase
速度比加快
JDK JRE JVM
JRE 包含JVM和一些java类库

JVM的跨平台 (不同平台对应不同的JVM)
JVM的语言无关性(跟语言无关性,只要语言可以翻译成class文件)


常见的JVM实现.png

常见的JVM实现
1.hotspot Jrockit. Oracle
2 J9 IBM
3 LiquidVM BEA
4 Zing(C4算法 垃圾回收算法)
5 TaobaoVM
6 毕昇 华为

运行时数据区


运行时数据区.png

线程共享区:方法区(运行时常量池) 堆
线程私有区:虚拟机栈 本地方法栈 程序计数器
直接内存(对外内存)

2.栈帧的执行对内存区域的影响


栈帧的执行对内存区域的影响.png

java方法的运行与虚拟机栈
虚拟机栈:存储当前线程运行java方法所需的数据、指令、返回地址
栈帧
大小限制:-Xss
栈溢出:
超出虚拟机大小限制(方法死递归)
栈帧:
一个方法对应一个栈帧

局部变量表:记录方法中所有的局部变量
操作数栈:记录当前的操作数
完成出口:记录方法的完成行号
程序计数器:指向当前线程正在执行的字节码指令(字节码行号)

字节码的行号针对本方法的偏移

本地方法栈
方法区
直接内存 unsafe 绕过了JVM的垃圾回收

深入理解JVM内存区域


深入理解JVM内存区域.png

JVM内存处理流程:
JVM申请内存
初始化运行时数据区
类加载
执行方法
创建对象

JHSDB工具:查看内存

内存虚拟化

堆溢出
栈溢出
方法区溢出
直接内存溢出

相关文章

  • Java内存管理

    2.9 JVM内存管理 2.9.1 运行时数据区域 JVM所管理的内存可以分为一下几个运行时数据区域: 其中方法区...

  • JVM内存分析

    JVM内存模型图JAVA虚拟机把管理的内存划分为几个不同的数据区。 JVM运行时数据区分类1. JVM栈 (Jav...

  • JVM 自动内存管理机制——Java内存区域与内存溢出异常

    JVM 自动内存管理机制——Java内存区域与内存溢出异常 (一)运行时数据区 (二)内存溢出(OutOfMem...

  • 线程安全之可见性问题

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

  • Java从入门到入坑(底层篇)

    01:JVM 1:JVM内存结构 class 文件格式、运行时数据区:堆、栈、方法区、直接内存、运行时常量池、 堆...

  • JVM学习笔记

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

  • java面试jvm总结

    JVM→ JVM 内存结构运行时数据区:堆、栈、方法区、直接内存、运行时常量池、堆存放对象, 方法区他用于存储已被...

  • 线程在JVM中的运行原理

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

  • JVM 面试整理

    JVM 内存结构,运行时数据区各模块什么作用、存放什么数据 jvm 内存结构包含:heap堆区:负责存放所有的 对...

  • jvm 运行时数据区-01

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

网友评论

      本文标题:JVM内存管理-运行时数据区

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