前言

  • 了解Java中的对象、变量等存放的内存区域十分重要
  • 本文将全面讲解Java虚拟机中的内存模型 & 分区,希望你们会喜欢

Carson带你学JVM系列文章,具体如下:
Carson带你学JVM:这是一份全面 & 详细的JVM学习指南
Carson带你学JVM:图文解析Java虚拟机内存结构
Carson带你学JVM:Java对象的创建、内存布局 & 访问定位全过程解析
Carson带你学JVM:Java对象如何判断存活原则-引用计数法 & 引用链法
Carson带你学JVM:这是一份全面 & 详细的垃圾收集算法(GC)讲解攻略
Carson带你学JVM:常见的垃圾收集器学习指南
Carson带你学JVM:类加载的全过程解析
Carson带你学JVM:你真的了解类加载器吗?(含双亲委派模型)
Carson带你学JVM:方法分派模型-静态分派、动态分派


目录


1. 内存模型 & 分区

  • Java虚拟机在运行Java程序时,会管理着一块内存区域:运行时数据区
  • 在运行时数据区里,会根据用途进行划分:
    1. Java虚拟机栈(栈区)
    2. 本地方法栈
    3. Java堆(堆区)
    4. 方法区
    5. 程序计数器

  • 下面,我将详细介绍每个内存模型分区

2. Java堆

  • 示意图

  • 简介

关于垃圾回收的讲解会在接下来推出的文章里讲解


3. Java虚拟机栈

  • 示意图

  • 简介


4. 本地方法栈

  • 示意图

  • 简介
    十分类似Java虚拟机栈,与Java虚拟机区别在于:服务对象,即
    Java虚拟机栈为执行 Java 方法服务;本地方法栈为执行 Native方法服务

5. 方法区

  • 示意图

  • 简介


  • 其内部包含一个运行时常量池,具体介绍如下:


6. 程序计数器

  • 示意图

  • 简介


7. 额外知识:直接内存

  • 定义:NIO类(JDK1.4引入)中基于通道和缓冲区的I/O方式 通过使用Native函数库 直接分配 的堆外内存
  • 特点:不受堆大小限制

不属于虚拟机运行时数据区的一部分 & 不在堆中分配

  • 应用场景:适用于频繁调用的场景

通过一个 存储在Java堆中的DirectByteBuffer对象 作为这块内存的引用 进行操作,从而避免在 Java 堆和 Native堆之间来回复制数据,提高使用性能

  • 抛出的异常:OutOfMemoryError,即与其他内存区域的总和 大于 物理内存限制

8. 总结

本文全面讲解JVM中的内存模型 & 分区,总结如下

Carson带你学JVM系列文章,具体如下:
Carson带你学JVM:这是一份全面 & 详细的JVM学习指南
Carson带你学JVM:图文解析Java虚拟机内存结构
Carson带你学JVM:Java对象的创建、内存布局 & 访问定位全过程解析
Carson带你学JVM:Java对象如何判断存活原则-引用计数法 & 引用链法
Carson带你学JVM:这是一份全面 & 详细的垃圾收集算法(GC)讲解攻略
Carson带你学JVM:常见的垃圾收集器学习指南
Carson带你学JVM:类加载的全过程解析
Carson带你学JVM:你真的了解类加载器吗?(含双亲委派模型)
Carson带你学JVM:方法分派模型-静态分派、动态分派


欢迎关注Carson_Ho的CSDN博客 与 公众号!

博客链接:https://carsonho.blog.csdn.net/


请帮顶 / 评论点赞!因为你的鼓励是我写作的最大动力!

Carson带你学JVM:图文解析Java虚拟机内存结构相关推荐

  1. 玩点深入的:Java 虚拟机内存结构及编码实战

    本文来源:不会coding 了解JVM内存结构的目的 在Java的开发过程中,因为有JVM自动内存管理机制,不再需要像在C.C++开发那样手动释放对象的内存空间,不容易出现内存泄漏和内存溢出的问题. ...

  2. jvm十五:java虚拟机内存图

  3. 二十、Java虚拟机内存结构

  4. java 参数类型不确定_详细解析Java虚拟机的栈帧结构

    什么是栈帧? 正如大家所了解的,Java虚拟机的内存区域被划分为程序计数器.虚拟机栈.本地方法栈.堆和方法区.(什么?你还不知道,赶紧去看看<Java虚拟机内存结构及编码实战>)这次要介绍 ...

  5. 【Java 虚拟机原理】JDK 体系结构 | Java 源码运行原理 | Java 虚拟机内存

    文章目录 一.JDK 体系结构 二.Java 源码运行原理 三.Java 虚拟机内存结构 一.JDK 体系结构 JDK 体系结构 : 下图所有的内容都是 JDK 体系中的组成元素 ; Java Lan ...

  6. Carson带你学Android:图文详解RxJava背压策略

    前言 Rxjava,由于其基于事件流的链式调用.逻辑简洁 & 使用简单的特点,深受各大 Android开发者的欢迎. 本文主要讲解的是RxJava中的 背压控制策略,希望你们会喜欢. Cars ...

  7. Carson带你学Android:全面解析列表ListView与AdapterView

    前言 ListView在Android开发中十分常见 今天,我将为大家带来ListView与AdapterView全面解析,含其特点.工作原理等,希望你们会喜欢. Carson带你学Android系列 ...

  8. Carson带你学Android:全面解析Android消息推送解决方案

    前言 鉴于现在运营需求的增强,消息推送在Android开发中应用的场景是十分常见 如电商的活动宣传.资讯类产品进行新闻推送等等 今天,我将全面介绍Android中实现消息推送的7种主流解决方案 Car ...

  9. Carson带你学Android:源码解析自定义View Draw过程

    前言 自定义View是Android开发者必须了解的基础 网上有大量关于自定义View原理的文章,但存在一些问题:内容不全.思路不清晰.无源码分析.简单问题复杂化 等 今天,我将全面总结自定义View ...

最新文章

  1. 我用1台笔记本模拟黑洞引力波,和超算2个月得出的结果只差1%丨马萨诸塞大学出品...
  2. 面向特定专业领域的计算机,大学计算机文化基础考试题(本科)基础知识部分
  3. 【鬼网络】之PXE高效批量网络装机
  4. 【MATLAB】混合粒子群算法原理、代码及详解
  5. python3 获取当前日期_python3获取日期
  6. 最小总代价(洛谷-U17433)
  7. css常用单位px、em、 rem 区别与各自的用法解析
  8. 软件巨头Salesforce带来AutoML杀手TransmogrifAI
  9. 修改CentOS系统默认编码为中文utf8(也可修改成其他的)
  10. Raki的读paper小记:ALBERT: A LITE BERT FOR SELF-SUPERVISED LEARNING OF LANGUAGE REPRESENTATIONS
  11. VB连接ACCESS数据库
  12. scrollTop clientHeight
  13. 当浏览器版本过低时提示升级浏览器
  14. Deepin邮箱登录阿里云邮箱个人版服务器设置
  15. PS 图片添加水印
  16. mysql5.7 1698 28000_MySqlError1698(28000)问题的解决方法
  17. 贪心 混合牛奶 Mixing Milk
  18. 阿里云服务器发送邮件
  19. c# cad二次开发 ribbon界面 给CAD加个菜单栏
  20. vue-cli生成的模板各个文件详解(转)

热门文章

  1. 2020年危险化学品经营单位安全管理人员考试平台及危险化学品经营单位安全管理人员作业考试题库
  2. SuperMap热力网格图
  3. matlab层次聚类中birch,Birch层次聚类
  4. 【GIS开发】OpenLayers在线瓦片数据源汇总
  5. Win10如何清除任务视图记录?
  6. 【专题】常用JavaScript正则表达式(regexp)汇编与示例
  7. nofile和noproc
  8. ArcMap操作:在折点处打断线
  9. 钉钉打卡使用H3C AP报错解决办法
  10. vue-quill-editor 自定义 img 标签,给标签添加 href 属性