当前位置: 首页 > news >正文

JVM内存模型笔记

1. 运行时数据区概述
  • JVM内存布局规定了Java运行过程中的内存申请、分配和管理策略。
  • 运行时数据区分为线程私有和线程共享两种。
2. 线程私有内存
  • 程序计数器:存储当前线程执行的字节码指令地址。
  • 虚拟机栈:保存方法调用的局部变量和部分结果。
  • 本地方法区:为线程执行本地方法提供空间。
3. 线程共享内存
  • :存储对象实例和数组。
  • 方法区:存储类信息、常量、静态变量等。
  • 堆外内存:JDK 7中的永久代或JDK 8的元空间和代码缓存。
4. 程序计数器
  • 作用:指示下一条执行的字节码指令。
  • 特性:线程私有,无内存溢出错误。
5. 虚拟机栈
  • 栈帧:包含局部变量表、操作数栈、动态链接信息等。
  • 局部变量表:存储方法参数和局部变量。
  • 操作数栈:保存计算过程的中间结果。
  • 动态链接:支持运行期的动态链接。
  • 方法返回地址:标识方法退出后的返回位置。
6. 本地方法栈
  • 管理本地方法调用,与虚拟机栈功能相似但用于非Java代码。
7. 堆内存
  • 新生代:新对象创建地,包括Eden区和Survivor区。
  • 老年代:长期存活对象存储地。
  • 元空间:存储类元信息,替代了永久代。
8. 垃圾收集(GC)
  • Minor GC:新生代的垃圾收集。
  • Major GC:老年代的垃圾收集。
  • Full GC:整个堆和方法区的垃圾收集。
9. TLAB(Thread Local Allocation Buffer)
  • 线程私有的内存分配区域,优化内存分配性能。
10. 逃逸分析
  • 优化技术,减少堆分配,可能实现栈上分配、同步省略和标量替换。
11. 方法区
  • 存储类信息、常量池、静态变量等。
  • 与堆分开,称为Non-Heap。
12. 方法区的演进
  • JDK 1.7开始逐步去除永久代,引入元空间。
  • JDK 1.8完全移除永久代,使用本地内存的元空间。
13. 运行时常量池
  • 方法区的一部分,存储编译期和运行期生成的常量。
14. 方法区垃圾回收
  • 回收废弃常量和不再使用的类型。
15. 性能监控与调优
  • 使用工具监控内存使用情况,通过参数调整内存大小和行为。
16. 异常处理
  • 异常处理信息存储在异常表中,用于异常发生时找到处理代码。
17. 动态链接与静态链接
  • 动态链接将符号引用转换为直接引用。
18. 虚方法表
  • 优化动态分派,使用索引表代替查找。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Print 前端打印 (调用 windows 自带打印功能,打印指定 dom 元素内容)
  • 【机器学习算法基础】(基础机器学习课程)-11-k-means-笔记
  • 3.OpenFeign与负载均衡
  • “碳”为观止,奥运会也“卷”起来了
  • 虚拟电厂,GPS北斗卫星同步时钟守护智慧能源
  • API 接口设计原则:RESTful 与 GraphQL
  • Golang | Leetcode Golang题解之第321题拼接最大数
  • RemCom和impacket.psexec简介
  • 【计算机网络---OSI七层模型】
  • 用uniapp 及socket.io做一个简单聊天app 撤回聊天及保留聊天记录 6
  • 基于RHEL7的服务器批量安装
  • Vue前端面试基础(一)
  • ptrade排坑笔记——执行k_start.sh脚本发现没有生成日志?
  • html+css+js+jquery实现一个 飘零的树叶
  • 将元组类型的日期时间转换为字符串格式time.asctime([t])
  • hexo+github搭建个人博客
  • $translatePartialLoader加载失败及解决方式
  • “大数据应用场景”之隔壁老王(连载四)
  • canvas 高仿 Apple Watch 表盘
  • CentOS6 编译安装 redis-3.2.3
  • CentOS7简单部署NFS
  • Docker下部署自己的LNMP工作环境
  • Laravel 中的一个后期静态绑定
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • MaxCompute访问TableStore(OTS) 数据
  • Mybatis初体验
  • rc-form之最单纯情况
  • Sass 快速入门教程
  • vue中实现单选
  • Webpack 4 学习01(基础配置)
  • 大快搜索数据爬虫技术实例安装教学篇
  • 构造函数(constructor)与原型链(prototype)关系
  • 深度学习中的信息论知识详解
  • 为视图添加丝滑的水波纹
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 字符串匹配基础上
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • $nextTick的使用场景介绍
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (第二周)效能测试
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (一)Neo4j下载安装以及初次使用
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET 读取 JSON格式的数据
  • .net 发送邮件
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .net的socket示例
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境
  • /bin/bash^M: bad interpreter: No such file or directory
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • @RequestParam,@RequestBody和@PathVariable 区别
  • [ C++ ] 继承
  • [.net] 如何在mail的加入正文显示图片