Carson带你学JVM:图文解析Java虚拟机内存结构
前言
- 了解
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
程序时,会管理着一块内存区域:运行时数据区- 在运行时数据区里,会根据用途进行划分:
Java
虚拟机栈(栈区)- 本地方法栈
Java
堆(堆区)- 方法区
- 程序计数器
- 下面,我将详细介绍每个内存模型分区
2. Java堆
示意图
简介
关于垃圾回收的讲解会在接下来推出的文章里讲解
3. Java虚拟机栈
示意图
简介
4. 本地方法栈
- 示意图
- 简介
十分类似Java
虚拟机栈,与Java虚拟机区别在于:服务对象,即
Java虚拟机栈为执行Java
方法服务;本地方法栈为执行Native
方法服务
5. 方法区
示意图
简介
- 注
其内部包含一个运行时常量池,具体介绍如下:
6. 程序计数器
- 示意图
- 简介
7. 额外知识:直接内存
- 定义:
NIO
类(JDK
1.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虚拟机内存结构相关推荐
- 玩点深入的:Java 虚拟机内存结构及编码实战
本文来源:不会coding 了解JVM内存结构的目的 在Java的开发过程中,因为有JVM自动内存管理机制,不再需要像在C.C++开发那样手动释放对象的内存空间,不容易出现内存泄漏和内存溢出的问题. ...
- jvm十五:java虚拟机内存图
- 二十、Java虚拟机内存结构
- java 参数类型不确定_详细解析Java虚拟机的栈帧结构
什么是栈帧? 正如大家所了解的,Java虚拟机的内存区域被划分为程序计数器.虚拟机栈.本地方法栈.堆和方法区.(什么?你还不知道,赶紧去看看<Java虚拟机内存结构及编码实战>)这次要介绍 ...
- 【Java 虚拟机原理】JDK 体系结构 | Java 源码运行原理 | Java 虚拟机内存
文章目录 一.JDK 体系结构 二.Java 源码运行原理 三.Java 虚拟机内存结构 一.JDK 体系结构 JDK 体系结构 : 下图所有的内容都是 JDK 体系中的组成元素 ; Java Lan ...
- Carson带你学Android:图文详解RxJava背压策略
前言 Rxjava,由于其基于事件流的链式调用.逻辑简洁 & 使用简单的特点,深受各大 Android开发者的欢迎. 本文主要讲解的是RxJava中的 背压控制策略,希望你们会喜欢. Cars ...
- Carson带你学Android:全面解析列表ListView与AdapterView
前言 ListView在Android开发中十分常见 今天,我将为大家带来ListView与AdapterView全面解析,含其特点.工作原理等,希望你们会喜欢. Carson带你学Android系列 ...
- Carson带你学Android:全面解析Android消息推送解决方案
前言 鉴于现在运营需求的增强,消息推送在Android开发中应用的场景是十分常见 如电商的活动宣传.资讯类产品进行新闻推送等等 今天,我将全面介绍Android中实现消息推送的7种主流解决方案 Car ...
- Carson带你学Android:源码解析自定义View Draw过程
前言 自定义View是Android开发者必须了解的基础 网上有大量关于自定义View原理的文章,但存在一些问题:内容不全.思路不清晰.无源码分析.简单问题复杂化 等 今天,我将全面总结自定义View ...
最新文章
- 我用1台笔记本模拟黑洞引力波,和超算2个月得出的结果只差1%丨马萨诸塞大学出品...
- 面向特定专业领域的计算机,大学计算机文化基础考试题(本科)基础知识部分
- 【鬼网络】之PXE高效批量网络装机
- 【MATLAB】混合粒子群算法原理、代码及详解
- python3 获取当前日期_python3获取日期
- 最小总代价(洛谷-U17433)
- css常用单位px、em、 rem 区别与各自的用法解析
- 软件巨头Salesforce带来AutoML杀手TransmogrifAI
- 修改CentOS系统默认编码为中文utf8(也可修改成其他的)
- Raki的读paper小记:ALBERT: A LITE BERT FOR SELF-SUPERVISED LEARNING OF LANGUAGE REPRESENTATIONS
- VB连接ACCESS数据库
- scrollTop clientHeight
- 当浏览器版本过低时提示升级浏览器
- Deepin邮箱登录阿里云邮箱个人版服务器设置
- PS 图片添加水印
- mysql5.7 1698 28000_MySqlError1698(28000)问题的解决方法
- 贪心 混合牛奶 Mixing Milk
- 阿里云服务器发送邮件
- c# cad二次开发 ribbon界面 给CAD加个菜单栏
- vue-cli生成的模板各个文件详解(转)