1.JVM内存结构

在JVM系列的第一篇文章中已经给出了JVM内存结构的简图,下面是JVM内存结构更加详细的图。


同样,JVM的内存结构可以分为上中下3层。
上层主要是类加载子系统,负责将字节码文件加载到内存中。
类加载又分为具体的三个环节,加载(loading)、链接(linking)、初始化(Initialization)。
将字节码文件加载到内存中需要用到类加载器。图上提到了主要的3种类加载器,引导类加载器(BootStrap ClassLoader)、扩展类加载器(Extension ClassLoader)、应用类加载器或者叫系统类加载器(Application ClassLoader)。也可以自定义类加载器。
类加载的第二个环节是链接。分为验证、准备、解析三步。
类加载的第三个环节是初始化。对静态变量的初始化。

中层是运行时数据区
包括方法区、堆区、栈区(通常所说的java虚拟机栈)、程序计数器、本地方法栈。
程序计数器每一个线程有一份。
栈区每一个每一个线程有一份。每一个线程在栈区存储的单位叫做栈帧。栈帧又分为很细节的结构,比如LV(Local Variable),称为局部变量表或者称为本地变量表;OS(Operater Stack)操作数栈;DL(Dynamic Linking)动态链接;RA(Return Address)方法返回地址。
本地方法栈,用于本地C方法的调用。
堆区,多个线程共享,最大的一块空间,也是GC重点需要考虑的空间。
方法区,多个线程共享,存放类的信息,常量信息,方法的信息,只有HostSpot才有,J9和JRockit是没有的。

下层是执行引擎
包括解释器、JIT编译器、垃圾回收器3部分。

更多JVM文章请参考我的JVM专栏:https://blog.csdn.net/u011069294/category_10113093.html

文章知识点与官方知识档案匹配,可进一步学习相关知识
Java技能树首页概览118326 人正在系统学习中

【转帖】3.JVM内存结构概述的更多相关文章

  1. [转帖]JVM内存结构 VS Java内存模型 VS Java对象模型

    JVM内存结构 VS Java内存模型 VS Java对象模型 https://www.hollischuang.com/archives/2509 Java作为一种面向对象的,跨平台语言,其对象.内 ...

  2. JVM内存结构简单认知

    关于JVM的面试传送门:https://blog.csdn.net/shengmingqijiquan/article/details/77508471 JVM内存结构主要划分为:堆,jvm栈,本地方 ...

  3. JVM内存结构详解

    从java编程语言说起... 1. Java编程语言简介 1.1 编程语言概述 系统级和应用级 系统级:C,C++,go,erlang 应用级:C#,Java,Python,Perl,Ruby,php ...

  4. 面试~jvm(JVM内存结构、类加载、双亲委派机制、对象分配,了解垃圾回收)

    一.JVM内存结构 ▷ 谈及内存结构各个部分的数据交互过程:还可以再谈及生命周期.数据共享:是否GC.是否OOM 答:jvm 内存结构包括程序计数器.虚拟机栈.本地方法栈.堆.方法区:它是字节码运行时 ...

  5. jvm系列(二):JVM内存结构

    JVM内存结构 所有的Java开发人员可能会遇到这样的困惑?我该为堆内存设置多大空间呢?OutOfMemoryError的异常到底涉及到运行时数据的哪块区域?该怎么解决呢?其实如果你经常解决服务器性能 ...

  6. JVM内存结构之三--持久代

    本文会介绍一些JVM内存结构的基本概念,然后很快会讲到持久代,来看下Java SE 8发布后它究竟到哪去了. 基础知识 JVM只不过是运行在你系统上的另一个进程而已,这一切的魔法始于一个java命令. ...

  7. JVM内存结构

    前言 在Java语言开发过程中,out of memory错误是很常见的一种错误.对于JVM的内存结构有更深入的了解,更更好的帮我们排查此类问题,有效的避免此类问题发生.在JAVA 8中内存结构有进行 ...

  8. 管中窥豹——从对象的生命周期梳理JVM内存结构、GC调优、类加载、AOP编程及性能监控

    如题,本文的宗旨既是透过对象的生命周期,来梳理JVM内存结构及GC相关知识,并辅以AOP及双亲委派机制原理,学习不仅仅是海绵式的吸收学习,还需要自己去分析why,加深对技术的理解和认知,祝大家早日走上 ...

  9. JVM内存结构,运行机制

    三月十号,白天出去有事情出去了一天,晚上刚到食堂就接到阿里电话, 紧张到不行,很多基础的问题都不知道从哪里说了orz: 其中关于JVM内存结构,运行机制,自己笔记里面有总结的,可当天还是一下子说不出来 ...

  10. 【JVM】JVM内存结构 VS Java内存模型 VS Java对象模型

    原文:JVM内存结构 VS Java内存模型 VS Java对象模型 Java作为一种面向对象的,跨平台语言,其对象.内存等一直是比较难的知识点.而且很多概念的名称看起来又那么相似,很多人会傻傻分不清 ...

随机推荐

  1. GetView介绍 以及 GetxController生命周期

    etView 只是对已注册的 Controller 有一个名为 controller 的getter的 const Stateless 的 Widget,如果我们只有单个控制器作为依赖项,那我们就可以 ...

  2. 27、flutter Dialog 弹窗

    AlertDialog //放在State<>之下 void _alertDialog() async { var result = await showDialog( barrierDi ...

  3. 如何使用loki查询日志中大于某一数字的值的日志

    简介 loki是一款轻量级的日志收集中间件,比elk体系占用的内存更小,采用go语言开发,可以利用grafana来查询loki中存储的日志,loki存储日志只对提前预设的标签做索引,所以日志存储空间占 ...

  4. Flink实时处理入门

    Flink实时处理入门 1.Flink框架介绍 Flink 诞生于欧洲的一个大数据研究项目 StratoSphere.它是由 3 所地处柏林的大学和欧洲其他一 些大学在 2010~2014 年共同进行 ...

  5. 号外!5G+X联创营华为云官网上线,5G 创业春天来了!

    摘要:为助力互联网行业客户与伙伴实现降本增效.抓住新趋势,华为云发起"5G+X"联创营计划. 会议室里,产品经理和程序员们唇枪舌战,陷入激烈得讨(zheng)论(chao). 产品 ...

  6. Serverless冷启动:如何让函数计算更快更强?

    摘要:借助Serverless计算,开发者仅需上传业务代码并进行简单的资源配置便可实现服务的快速构建部署,云服务商则按照函数服务调用量和实际资源使用收费,从而帮助用户实现业务的快速交付和低成本运行. ...

  7. 华为云数据库GaussDB(for openGauss):初次见面,认识一下

    摘要:本文从总体架构.主打场景.关键技术特性等方面进行介绍GaussDB(for openGauss). 1.背景介绍 3月16日,在华为云主办的GaussDB(for openGauss)系列技术第 ...

  8. DBA:这有一份对接NBU备份故障排除指南,请查收!

    摘要:当前DWS支持NBU介质备份恢复,本文介绍DWS对接NBU备份故障排除方法. 本文分享自华为云社区<DWS对接NBU备份故障排除指南>,作者: 唐伯虎点蚊香. NetBackup是V ...

  9. 理论+实例,带你掌握Linux的页目录和页表

    摘要:操作系统在加载用户程序的时候,不仅仅需要分配物理内存,来存放程序的内容:而且还需要分配物理内存,用来保存程序的页目录和页表. 本文分享自华为云社区<Linux从头学15:[页目录和页表]- ...

  10. 字节跳动基于 ClickHouse 优化实践之“查询优化器”

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 相信大家都对大名鼎鼎的 ClickHouse 有一定的了解了,它强大的数据分析性能让人印象深刻.但在字节大量生产使 ...