方法区是各个线程共享的内存区域,在虚拟机启动时创建。

用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。

虽然Java虚拟机规范把方法区描述为堆的一个逻辑部分,但是它却又一个别名叫做Non-Heap(非堆),目的是与Java堆区分开来。

当方法区无法满足内存分配需求时,将抛出OutOfMemoryError异常。

The Java Virtual Machine has a method area that is shared among all Java Virtual
Machine threads.
The method area is created on virtual machine start-up.
Although the method area is logically part of the heap,......
If memory in the method area cannot be made available to satisfy an allocation
request, the Java Virtual Machine throws an OutOfMemoryError.

此时回看装载阶段的第2步:(2)将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构

如果这时候把从Class文件到装载的第(1)和(2)步合并起来理解的话,可以画个图

值得说明的

(1)方法区在JDK 8中就是Metaspace,在JDK6或7中就是Perm Space

(2)Run-Time Constant Pool

Class文件中除了有类的版本、字段、方法、接口等描述信息外,还有一项信息就是常量池,用于存放编译时期生成的各种字面量和符号引用,这部分内容将在类加载后进入方法区的运行时常量池中存放。

Each run-time constant pool is allocated from the Java Virtual Machine's method area (§2.5.4).s

Method Area(方法区)相关推荐

  1. java中stack heap_java虚拟机中的堆(heap)、栈(stack)、方法区(method area)

    1.堆区 存储的全部是对象,每个对象都包含一个与之对应的class的信息.(class的目的是得到操作指令) jvm只有一个heap区,被所有线程共享,不存放基本类型和对象引用,只存放对象本身 堆的优 ...

  2. 1、虚拟机内存管理、运行时数据区、线程共享区、Java堆、新生代、老年代、Eden区域分配、方法区、线程独占区、虚拟机栈

    1.Java虚拟机内存管理 1.1.运行时数据区[Runtime Data Area] 1.1.1.线程共享区 1.1.1.1.Java堆[heap] 1.1.1.1.1.新生代.老年代.Eden区域 ...

  3. 为什么jvm要分为堆、方法区等?原理是什么?_「JVM」知识点详解一:JVM运行原理详解...

    前言 JVM 一直都是面试的必考点,大家都知道,但是要把它搞清楚又好像不是特别容易.JVM 的知识点太散,不系统,今天带大家详细的了解一下jvm的运行原理. 正文 1 什么是JVM? JVM是Java ...

  4. native、方法区

    native 凡是使用了native关键字的,说明Java的作用范围已经达不到了,它会去调用底层的C语言的库. 进入本地方法栈. 调用本地方法接口.JNI(Java Native Interface) ...

  5. 堆、栈、方法区、直接内存、堆和栈区别

    JVM的体系结构 (1) Class Loader类加载器        负责加载 .class文件,class文件在文件开头有特定的文件标示,并且ClassLoader负责class文件的加载等,至 ...

  6. JVM入门(位置、体系结构、类加载器、双亲委派机制、沙箱安全机制、Native、PC寄存器、方法区、堆(新生区{伊甸园区、幸存区}、养老区、永久区)、OOM、GC算法、JMM)

    目录 一.JVM的位置 二.JVM的体系结构 三.类加载器 1.类加载器举例 2. JVM中提供了三层的ClassLoader 3. 双亲委派机制(重要) 3.1 工作原理 3.2.优点 四.沙箱安全 ...

  7. JVM 内存模型:方法区(Method Area)

    1. 前言 最近在研究Java语言底层基础知识,发现对于JVM 内存模型理解不够深入.笔者突发奇想深入理解JVM内存模型,特在此介绍详细介绍一下JVM内存模型中的方法区.看似名称叫做方法区,其实不然. ...

  8. 四.运行时数据区-本地方法栈(Native Method Stack)-堆-方法区

    1. 前言:本地方法接口 1.1 本地方法 简单来讲,一个Native Method就是一个java调用非java代码的接口,一个Native Method 是这样一个java方法:该方法的实现由非J ...

  9. JVM Runtime Data Area(运行时数据区中的堆/栈/方法区讲解)

    JVM的组成 JVM由4大部分组成:ClassLoader .Runtime Data Area .Execution Engine .Native Interface.我们这里重点讲得是Runtim ...

最新文章

  1. Effective STL 为包含指针的关联容器指定比较类型
  2. 用sisotool设计调节参数_工业净化车间施工的重要参数
  3. Python使用openCV把原始彩色图像转化为灰度图、使用OpenCV把图像二值化(仅仅包含黑色和白色的简化版本)、基于自适应阈值预处理(adaptive thresholding)方法
  4. C# 操作Excel之旁门左道 [ C# | Excel ]
  5. SQL优化这么做就对了
  6. python找最长的字符串_在字符串python中查找最长的唯一子字符串
  7. 如何预编译 Android 模拟器专用内核
  8. ruby与python_Ruby对比Python的优势和劣势
  9. spring boot 入门_玩转springboot2.x之快速入门开山篇
  10. 结对项目 刘静 201303014059 计科高职13-2
  11. C语言exchange函数,C++指针作为函数参数
  12. Foxmail安装以及使用
  13. 【SpringClould】SpringClould eureka 单机 案例实验
  14. 最全中文停用词表(可直接复制)
  15. 产品经理,设计师,前端工程师必备的绘图工具(原型图,思维导图,UML,流程图,架构图)
  16. 查看WiFi记录日志
  17. Android知识梳理:点击事件分发机制
  18. 【爬虫】链接二手房信息爬取
  19. 编写函数:字符串的小写转大写(Append Code)
  20. android go 短信,GO短信加强版安卓版

热门文章

  1. 第三次作业(词频统计及其效能分析)
  2. Django手写登录装饰器
  3. 蓝桥杯-题目:猜算式
  4. C++程序设计方法3:强制类型转换
  5. openstack-networking-neutron(一)---端到端和点到点的理解
  6. Python—— *与** 参数说明
  7. 关于wordpress中更换CKEditor编辑器
  8. 省常中模拟 Test3 Day2
  9. nand ubi -4 kernel和mtd
  10. (六)Web Storage的使用实例——简单web留言本