前言:

  • 了解Java中的对象、变量等存放的内存区域十分重要

  • 本文将全面讲解Java虚拟机中的内存模型 & 分区,希望你们会喜欢

目录:

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,即与其他内存区域的总和 大于 物理内存限制


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

JVM 虚拟机图文详解!真香!秒懂!一点都不难!相关推荐

  1. JVM 虚拟机栈详解

    当Java虚拟机运行程序时.每当一个新的线程被创建时.Java 虚拟机都会分配一个虚拟机栈,Java虚拟机栈是以帧为单位来保存线程的运行状态.Java栈只会有两种操作:以帧为单位进行压栈跟出栈. 某个 ...

  2. [java] 虚拟机(JVM)底层结构详解[转]

    [java] 虚拟机(JVM)底层结构详解[转] 本文来自:曹胜欢博客专栏.转载请注明出处:http://blog.csdn.net/csh624366188 在以前的博客里面,我们介绍了在java领 ...

  3. Hadoop入门(四)——模板虚拟机环境准备(图文详解步骤2021)

    Hadoop入门(四)--模板虚拟机环境准备(图文详解步骤2021) 系列文章传送门 这个系列文章传送门: Hadoop入门(一)--CentOS7下载+VM上安装(手动分区)图文步骤详解(2021) ...

  4. VMware下OSSIM 5.2.0的下载、安装和初步使用(图文详解)

    入门阶段不建议选用最新的版本. 采用OSSIM 4.11 到 OSSIM5.0.3 之间任何版本做实验,sensor的状态都会是"V".   建议,入门,采用OSSIM5.0.0  ...

  5. 大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 图文详解

    引言 在之前的大数据学习系列中,搭建了Hadoop+Spark+HBase+Hive 环境以及一些测试.其实要说的话,我开始学习大数据的时候,搭建的就是集群,并不是单机模式和伪分布式.至于为什么先写单 ...

  6. Docker持续部署图文详解

    2019独角兽企业重金招聘Python工程师标准>>> Docker持续部署图文详解 博客分类: docker 架构 JAVA项目如何通过Docker实现持续部署(只需简单四步),即 ...

  7. qt on android qml,Qt on Android: Qt Quick 之 Hello World 图文详解

    在上一篇文章,<Qt on Android:QML 语言基础>中,我们介绍了 QML 语言的语法,在最后我们遗留了一些问题没有展开,这篇呢,我们就正式开始撰写 Qt Quick 程序,而那 ...

  8. CentOS 7安装教程(图文详解)如下

    虚拟机安装 CentOS 7安装教程(图文详解)如下:

  9. 实验图文详解——apache的编译安装及httpd服务开机自启

    实验图文详解--apache的编译安装及httpd服务开机自启 1.导入安装包 2.解压安装包 3.分别解压httpd.apr.apr-util包 4.对apr.apr-util目录进行移动及重命名操 ...

最新文章

  1. 2018-4-8使用兔子的例子对比说明遗传算法,局部搜索,禁忌搜索,模拟退火方法
  2. Spring入门第五课
  3. JavaScript强化教程——javascript性能优化
  4. 字节流练习:图片复制
  5. 13.6 Thread类自定义线程类
  6. 为什么 MySQL的常用引擎都默认使用 B+ 树作为索引?
  7. Linux 光盘的挂载和解挂
  8. 使用 Carla 和 Python 的自动驾驶汽车第 2 部分 —— 控制汽车并获取传感器数据
  9. java分布式应用限流实现
  10. validation 参数校验和统一异常处理
  11. android删除wifi配置,[RK3288][Android6.0] WiFi之无线网络配置的忘记(移除)过程
  12. 计算机中那些事儿(七):近期拆计算机小感
  13. 有计算机科学与技术专业的大学,开设计算机科学与技术专业的大学有哪些,开设计算机科学与技术专业的大学有哪些...
  14. Object-C 语法 字符串 数组 字典 和常用函数 学习笔记
  15. 如果有因果报应和轮回,又是怎么管理的?
  16. MOODLE的安装与基本配置
  17. ios 测试证书配置
  18. 中年男人,你如何自我救赎
  19. 雷电模拟器通过命令行设置分辨率及其他命令
  20. 极力推荐的微信小程序,超级实用,一定要收藏

热门文章

  1. Deep Learning论文笔记之(二)Sparse Filtering稀疏滤波
  2. Machine Learning week 6 quiz: Machine Learning System Design
  3. Matlab字符串函数
  4. MySQL 不落地迁移、导入 PostgreSQL - 推荐 rds_dbsync
  5. Sicily 6768. Log Books 解题报告
  6. Exchange安装
  7. 也许MVC不该重写Url格式?
  8. 【OpenCV】函数imread的使用之通道数变化
  9. 信号处理专业名词术语
  10. 关于C++模版的连接错误问题