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

Java # JVM内存管理

一、运行时数据区域

程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区、运行时常量池、直接内存

二、HotSpot虚拟机对象

  1. 对象创建:
    1. 引用检查
    2. 类加载检查
    3. 分配内存空间:指针碰撞、空闲列表
    4. 分配空间初始化
    5. 对象信息设置(对象头内)
  2. 对象内存布局:
    1. 对象头
    2. 实例数据
    3. 对象填充
  3. 对象访问定位:
    1. 句柄访问
    2. 直接指针访问
  4. OutOfMemoryError(OOM)
    1. 程序计数器不存在此问题
    2. Java堆溢出:
      1. 内存泄漏
      2. 内存溢出
    3. 虚拟机栈本地方法栈(HotSpot不区分)溢出
      1. StackOverFlowError:线程请求栈深度 > 虚拟机允许最大深度
      2. OutOfMemoryError:虚拟机栈内存允许动态拓展
      3. 可以通过减小最大堆和减小栈容量换取更多的线程
    4. 方法区和运行时常量区溢出
    5. 本机直接内存溢出:HeapDump无明显异常,可能原因:NIO间接使用DirectMemory
  5. 垃圾收集器与内存分配策略:对象回收
    1. 引用计数算法
    2. 可达性分析算法
    3. 引用:
      1. 强引用:Object object = new Object()存在引用赋值,永远不会回收被引用对象
      2. 软引用:还有引用但是非必须的对象,发生内存溢出异常前被二次回收,回收还不够才会报内存溢出异常
      3. 弱引用:非必须对象,生存到下一次垃圾回收为止
      4. 虚引用
http://www.lryc.cn/news/123768.html

相关文章:

  • 大疆第二批笔试复盘
  • 【Linux】磁盘或内存 占用比较高要怎么排
  • 解决xss转义导致转码的问题
  • numba 入门示例
  • BUUCTF 还原大师 1
  • 自定义hook之首页数据请求动作封装 hooks
  • 2023上半年京东手机行业品牌销售排行榜(京东数据平台)
  • lodash之cloneDeep()源码阅读笔记
  • 算法模版,今天开始背
  • 新的 Python URL 解析漏洞可能导致命令执行攻击
  • react项目做的h5页面加载缓慢优化(3s优化到0.6s)
  • 如何修复损坏的DOC和DOCX格式Word文件?
  • UI设计师个人工作感悟5篇
  • Java堆、栈、内存的知识
  • tp6 RabbitMQ
  • java Spring Boot yml多环境拆分文件管理优化
  • 【设计模式——学习笔记】23种设计模式——状态模式State(原理讲解+应用场景介绍+案例介绍+Java代码实现)
  • 【LeetCode每日一题】——41.缺失的第一个正数
  • typedef函数代码段解释以及部分Windows下的系统函数
  • Typora常用手册
  • 互联网发展历程:从网线不够长到中继器的引入
  • 【Java】异常处理 之 使用SLF4J 和 Logback
  • C++11并发与多线程笔记 (1)
  • 07_Hudi案例实战、Flink CDC 实时数据采集、Presto、FineBI 报表可视化等
  • ceph相关概念和部署
  • Android Jetpack Compose 中的分页与缓存展示
  • 无名管道 / 有名管道(FIFO)
  • Three.js纹理贴图
  • 1+X Web前端开发职业技能等级证书建设方案
  • Rx.NET in Action 第二章学习笔记