专栏首页程序员的成长之路13 张图解 Java 中的内存模型

13 张图解 Java 中的内存模型

程序员的成长之路

互联网/程序员/技术/资料共享

关注

阅读本文大概需要 2.8 分钟。

来自:juejin.im/post/6844903677279338509

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中的内存模型 & 分区,总结如下

<END>

本文分享自微信公众号 - 程序员的成长之路(cxydczzl),作者:戳一戳→

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-09-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java程序员的成长之路

    本篇介绍的是大体思路,以及每个节点所需要学习的书籍内容,如果大家对详细的技术点有需要,欢迎留言,后续我在写一篇每个阶段需要学习掌握的技术点。

    良月柒
  • 【107期】谈谈面试必问的Java内存区域(运行时数据区域)和内存模型(JMM)

    来自:www.cnblogs.com/czwbig/p/11127124.html

    良月柒
  • Java 开发人员 2019 生态系统信息图

    来源 | www.jetbrains.com/zh-cn/lp/devecosystem-2019/java/

    良月柒
  • 13 张图解 Java 中的内存模型

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

    开发者技术前线
  • 13 张图解 Java 中的内存模型

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

    全栈自学社区
  • JVM:图文详解Java虚拟机的内存结构

    Carson.Ho
  • 工作了几年还不知道Java虚拟机?(图文详解JVM)

    Java编程指南
  • 万万没想到,JVM内存结构的面试题可以问的这么难?

    在我的博客中,之前有很多文章介绍过JVM内存结构,相信很多看多我文章的朋友对这部分知识都有一定的了解了。

    Java技术江湖
  • 万万没想到,JVM内存结构的面试题可以问的这么难?

    在我的博客中,之前有很多文章介绍过JVM内存结构,相信很多看多我文章的朋友对这部分知识都有一定的了解了。

    java思维导图
  • 你创建的 Java 对象搁哪了

    答应我,跟我一起学习吧,别再做知识收藏家了,把《深入理解 Java 虚拟机》书拿出来,翻它,盘它,磋磨它。

    星尘的一个朋友

扫码关注云+社区

领取腾讯云代金券