前言

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

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

示意图

目录

示意图

1. 内存模型 & 分区

Java虚拟机在运行Java程序时,会管理着一块内存区域:运行时数据区

在运行时数据区里,会根据用途进行划分:

Java虚拟机栈(栈区)

本地方法栈

Java堆(堆区)

方法区

程序计数器

示意图

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

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_Ho

链接:https://juejin.im/post/6844903677279338509

java内部模型,13 张图拆解 Java 中的内存模型相关推荐

  1. python构造方法与java区别_一张图秒懂Java和Python的区别,你知道吗?

    对于程序员的语言千千万JAVA\C\C++\PHP\Python不同的程序员使用着不同的语言,做着功能相似需求却不同的产品. 但是最近Python在人工智能的推动下突然出现在人们的面前,其实和Java ...

  2. python和java的区别-一张图秒懂Java和Python的区别,你知道吗?

    对于程序员的语言千千万JAVACC++PHPPython不同的程序员使用着不同的语言,做着功能相似需求却不同的产品. 但是最近Python在人工智能的推动下突然出现在人们的面前,其实和Java一样Py ...

  3. 了解Java中的内存模型只需13张图!

    前言 了解Java中的对象.变量等存放的内存区域十分重要 本文将全面讲解Java虚拟机中的内存模型 & 分区,希望你们会喜欢 目录 1. 内存模型 & 分区 Java虚拟机在运行Jav ...

  4. 一图胜千言,8 张图理解 Java

    一图胜千言,8 张图理解 Java 一图胜千言,下面图解均来自Program Creek 网站的Java教程,目前它们拥有最多的票选.如果图解没有阐明问题,那么你可以借助它的标题来一窥究竟. 1.字符 ...

  5. 一周极客热文:8张图理解Java

    图:equals()方法.hashCode()方法的区别 HashCode被设计用来提高性能.equals()方法与hashCode()方法的区别在于: 如果两个对象相等(equal),那么他们一定有 ...

  6. Java虚拟机中的内存模型?JSP常用的动作标签及作用? 如何防止表单重复提交问题? JSP四大作用域及请求范围? 分别说出http,https,ftp,talnet的默认端口?

    文章目录 一 ,Java虚拟机中的内存模型JVM? 1,Java堆 2,方法区 3,Java栈 4,本地方法栈 问题扩展: 二 , JSP常用的动作标签及作用 (1)问题分析: (2)核心答案讲解: ...

  7. Java 垃圾回收机制,13张图给你讲清楚!

    作者:Rhys_Lee 等等等 https://blog.csdn.net/zl1zl2zl3/article/details/90904088 什么是自动垃圾回收? 第一步:标记 第二步:清除 压缩 ...

  8. 用8张图理解Java

    一图胜千言,下面图解均来自Program Creek 网站的Java教程,目前它们拥有最多的票选.如果图解没有阐明问题,那么你可以借助它的标题来一窥究竟. 1.字符串不变性 下面这张图展示了这段代码做 ...

  9. java gc日志乱码_6000+字,30+张图。JAVA线上故障排查全套路总结。

     fredalxin|https://sourl.cn/duWZhd 线上故障主要会包括 cpu.磁盘.内存以及 网络 问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次 ...

最新文章

  1. 基于GAN模型的生成人脸重构、返老还童、看见前世今生(Age Progression/Regression)
  2. 独家 | 如何创建用于离线估算业务指标的测试集?(附代码链接)
  3. python中的zip()函数和map()函数
  4. 抛出错误_如何找到抛出ORA00933错误的SQL
  5. dpdk18.11 收发包流程分析
  6. 拆分器SplitContainer控件
  7. hadoop之BlockPoolManager源码分析
  8. Python+request+ smtplib 测试结果html报告邮件发送(上)《五》
  9. RHEL5.9下cacti监控的部署详解
  10. 序列化和反序列化(三)——父类的序列化
  11. 真实!数据分析师到底是做什么的?
  12. 从键盘输入一个字符串a,并在串a中的最大元素后面插入字符串b(b[]=“ab”),输出字符串a。
  13. 使用原型骨架创建Maven项目时遇到Could not transfer metadata org.apache.maven.plugins的解决方案
  14. vscode 中python不能跳转问题
  15. 黑帽python第二版(Black Hat Python 2nd Edition)读书笔记 之 第四章 使用SCAPY掌控网络(2)Scapy实现ARP缓存投毒
  16. C语言随机点名器程序
  17. springboot项目通过gradle制作webjars
  18. Jetson NX YOLOV目标检测学习笔记1----CV调用USB摄像头
  19. git gerrit 拉取本地服务器代码出错Unable to negotiate with XX.XX.XX.XX port XX: no matching key exchange me
  20. 当WPS文件保存并关闭后恢复的方法。

热门文章

  1. 现就本人在初学MFC中遇到的问题以及解决方法做一下总结,软件环境为VS2008
  2. 《华为机试》刷题之HJ58 输入n个整数,输出其中最小的k个
  3. 解决:Gitlab上出现“You won't be able to pull or push project code via SSH until you add an SSH key to you”
  4. WiFi6模块AP6275S
  5. 对Github中Organization内几个概念的理解
  6. 四川计算机二级时间安排,2020年3月四川计算机二级考试时间
  7. 话说 synchronized
  8. js导出PPT -- pptxgen使用方法
  9. 中国“量子霸权”成果:比最快超级计算机快一百万亿倍
  10. VR社交应用Rec Room再获1.45亿美元融资,用户突破3700万