上篇文章写道了jvm的基本原理,那么作为jvm主要的战场在内存管理,我们更应该清楚了。

jvm的内存模型划分:程序计数器、虚拟机栈内存、本地方法栈、堆内存、方法区

  • 程序计数器主要工作:

线程私有,主要是记录代码指令执行的位置,方便线程切换恢复后能够找到对应的执行位置情况 。字节码解释器通过改变计数器的值来选取下一条需要执行的指令字节码指令,分支、循环、跳转、异常处理、线程恢复等功能都是通过程序计数器来协调完成的。

关键词:

1.线程私有、线程隔离

2.没有OutOfMemoryError异常

3.生命周期和线程相同

4.运行速度最快内存区:在CPU中

  • 虚拟机栈:

栈内存也是线程私有的,是运行时内存模型中一块,执行方法时创建一个栈帧,用于存储方法的局部变量表、操作数栈、动态链接、方法的出口等信息,方法的调用到执行完成,对应的就是虚拟机栈的入栈和出栈。

关键词:

1.线程私有

2.存储局部变量表、操作数栈、动态链接、方法出口等

3.异常:StackOverflowError:线程请求的栈深度大于虚拟机所允许的深度(常见于循环调用),OutOfMemoryError:如果虚拟机栈可以动态扩展,而扩展时无法申请到足够的内存

  • 本地方法栈

线程私有,运行时内存,和虚拟机栈区别在于他是给本地方法(native)服务,而虚拟机栈主要是给java方法使用的。其他定义基本一致,也有StackOverflowError、OutOfMemoryError异常。

关键词:

1.线程私有

2.和虚拟机栈使用方式一致

3.异常:StackOverflowError、OutOfMemoryError

  • 堆内存

线程共享。是虚拟机的最大内存区域,用于存放java对象,属于运行时内存区,在逻辑上是连续的,也是垃圾回收器的主要工作区。在虚拟机创建的时候就初始化好,可以动态分配内存,对象的生命周期是独立的,由垃圾回收器处理。数据访问比较慢

关键词:

1.线程共享

2.jvm创建就初始化好堆内存

3.异常:OutOfMemoryError

  • 方法区

线程共享。存储已被虚拟机加载的类信息、常量、静态常量、即时编译器编译后的代码等数据。jdk1.8后叫在元数据区。

1.线程共享

2.异常:OutOfMemoryError

架构师养成之道-03-jvm内存分布详解相关推荐

  1. 架构师养成之道-02-jvm原理

    jvm对于java程序员来说,应该是最先了解的东西,然而,最初学习的时候却只知道我们的java程序是运行在jvm上的,是他来保证我们程序能做到一次编译到处运行的.至于核心原理,初学者可能并未关注.那么 ...

  2. 图文并茂:JVM 内存布局详解

    来源:https://www.cnblogs.com/hyxiao97/p/15395886.html 内存布局 JVM内存布局规定了Java在运行过程中内存申请.分配.管理的策略,保证了JVM的稳定 ...

  3. JVM 内存布局详解,图文并茂,写得太好了!

    今年面试比较卷,技术面试官上来就爱问JVM,下面来分享一篇JVM干货. 内存布局 Heap 堆区 Metaspace 元空间 JVM Stacks 虚拟机栈 Native Method Stacks( ...

  4. JVM内存参数详解以及配置调优

    基本概念: PermGen space:全称是Permanent Generation space.就是说是永久保存的区域,用于存放Class和Meta信息,Class在被Load的时候被放入该区域 ...

  5. Java基础:由JVM内存模型详解线程安全

    1.前言 最近在研究JVM内存模型和Java基础知识.主要讲的是线程共享变量与线程私有变量以及如何写出线程安全的代码.这里列出一条规则,"类中的成员变量,也叫实例变量,也叫全局变量,它是非线 ...

  6. JVM内存区域详解(Eden Space、Survivor Space、Old Gen、Code Cache和Perm Gen)

    参考文章: https://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html https://www.cnblogs.com/duanx ...

  7. 【JVM】JVM内存模型详解

    一.JVM是什么? JVM是Java Virtual Machine(Java虚拟机)的缩写,是通过在实际的计算机上仿真模拟各种计算机功能来实现的.由一套字节码指令集.一组寄存器.一个栈.一个垃圾回收 ...

  8. JVM 内存布局详解,图文并茂,简直了

    内存布局 JVM内存布局规定了Java在运行过程中内存申请.分配.管理的策略,保证了JVM的稳定高效运行.不同的JVM对于内存的划分方式和管理机制存在部分差异.结合JVM虚拟机规范,一起来探讨jVM的 ...

  9. JVM 内存布局详解,图文并茂,大写的服

    内存布局 JVM内存布局规定了Java在运行过程中内存申请.分配.管理的策略,保证了JVM的稳定高效运行.不同的JVM对于内存的划分方式和管理机制存在部分差异.结合JVM虚拟机规范,一起来探讨jVM的 ...

  10. JVM 内存布局详解,图文并茂,写得太好了

    内存布局 JVM内存布局规定了Java在运行过程中内存申请.分配.管理的策略,保证了JVM的稳定高效运行.不同的JVM对于内存的划分方式和管理机制存在部分差异.结合JVM虚拟机规范,一起来探讨jVM的 ...

最新文章

  1. 用.NET调用oracle的存储过程返回记录集
  2. AI顶会直播丨深度学习顶级会议ICLR中国预讲会明天召开,为期三天五大论坛
  3. oracle rac应急_ORACLE紧急情况检查应急预案
  4. [转] form.getForm().submit的用法及Ext.Ajax.request的小小区别
  5. 用数组实现从文件搜索帐户和验证密码
  6. Linux内存page,【原创】(十四)Linux内存管理之page fault处理
  7. python基础学习笔记——方法返回值
  8. 美团点评CTO罗道锋确认离职,新东家是快手?
  9. SAP Marketing Cloud功能简述(四) : 线索和客户管理
  10. 如下为利用Linux内核链表创建,Linux内核中链表的实现与应用
  11. 信息学奥赛C++语言: 素数个数
  12. 引领性指标与滞后性指标_测量可用性组同步滞后
  13. 11.PHP核心技术与最佳实践 --- 高性能网站架构方案
  14. linux查看ipmi端口down,Linux通过命令行设置IPMI的解决方法
  15. windows安全中心打不开defender的完美解决方法,适用于win11更新后进入defender提示需要新应用或者Windows安全中心出错,或者账户更换后出现此问题。
  16. storm风暴英雄 tempo_风暴英雄Tempo Storm 安娜版本天梯环境速报 安娜强度居T3
  17. igh+preempt_rt主战搭建
  18. 马云重构阿里:或分拆成30家公司 整合3家上市
  19. 基于加密机制的WebService访问与通信安全
  20. 时间分割算法,Java将一段时间按星期来分割

热门文章

  1. 在建工程的管理是怎样在总帐中实现
  2. SAP CO模块权限控制
  3. 社会保险省内转移需要什么手续或过程?
  4. SAP RFC-RFC概述
  5. 左手供给,右手营销,聚划算99大促首战告捷的下沉市场进攻方法论
  6. java 数组的方法_数组常用方法
  7. ad采集 cube配置 dma_【技术技巧】 使用MCC数据采集设备获取模拟波形
  8. mysql 取消主从复制_MySQL:第一次看到有人把MySQL主从复制讲解的这么清楚
  9. 从0开始利用宝塔linux面板+DSShop搭建一个简单的购物网站
  10. 如何在html中添加选择列表,html – 如何在选择列表中添加图像