什么是方法区?

方法区(Method Area)是jvm规范里面的运行时数据区的一个组成部分,jvm规范中的运行时数据区还包含了:pc寄存器、虚拟机栈、堆、方法区、运行时常量池、本地方法栈。

方法区存储东西?

主要用来存储class、运行时常量池、字段、方法、代码、JIT代码等。

注意:

(1)运行时数据区跟内存不是一个概念。

(2)方法区是运行时数据区的一部分

(3)方法区是jvm规范中的一部分,并不是实际的实现,切忌将规范跟实现混为一谈。

我们再来看下永久带(Perm区):

永久带又叫Perm区,只存在于hotspot jvm中,并且只存在于jdk7和之前的版本中,jdk8中已经彻底移除了永久带,jdk8中引入了一个新的内存区域叫metaspace。

(1)并不是所有的jvm中都有永久带,ibm的j9,oracle的JRocket都没有永久带。

(2)永久带是实现层面的东西。

(3)永久带里面存的东西基本上就是方法区规定的那些东西。

因此,我们可以说,永久带是方法区的一种实现,当然,在hotspot jdk8中metaspace可以看成是方法区的一种实现。

下面我们来看下hotspot jdk8中移除了永久带以后的内存结构:

结论:

(1)方法区是规范层面的东西,规定了这一个区域要存放哪些东西

(2)永久带或者是metaspace是对方法区的不同实现,是实现层面的东西。

转载于:https://www.cnblogs.com/liuys635/p/11327999.html

JVM的方法区和永久带是什么关系?相关推荐

  1. JVM之 方法区、永久代(PermGen space)、元空间(Metaspace)三者的区别

    文章目录 0.前言(JVM 运行时区域) 1.PermGen(永久代) 2.Metaspace(元空间) 3.JDK6 .JDK7.JDK8 内存溢出的示例 4.元空间与本地内存 5.总结 0.前言( ...

  2. JVM之方法区、永久代(PermGen space)、元空间(Metaspace)三者的区别

    JVM体系结构 根据 JVM 规范,JVM 运行时区域大致分为 方法区.堆.虚拟机栈.本地方法栈.程序计数器 五个部分. 1).方法区 方法区是JVM 所有线程共享. 主要用于存储类的信息.常量池.方 ...

  3. JVM之方法区Mothed Area

    JVM之方法区Mothed Area 目录: JVM体系结构概览 JVM之方法区解析 1. JVM体系结构概览 2. JVM之方法区解析 1. 方法区是被所有线程共享,所有字段和方法字节码,以及一些特 ...

  4. java永久区_Java方法区和永久代

    目前有三大Java虚拟机:HotSpot,oracle JRockit,IBM J9. JRockit是oracle发明的,用于其WebLogic服务器,IBM JVM是IBM发明的用于其Websph ...

  5. 欧尼酱讲JVM(17)——方法区详解有图有真相

    目录 位置图解 方法区的理解 方法区在哪里 方法区的基本理解 HotSpot中方法区的理解(演进过程) 方法区的内部结构 图解方法区内部结构 运行时常量池 class文件中常量池的理解 为什么需要常量 ...

  6. Java栈内存、堆内存、方法区对对象和引用的关系

    问题:Java栈内存.堆内存.方法区对对象和引用的关系 答案: 1.单个对象 如图所示: (1)首先类加载器加载要运行的类,首先将main方法加载进方法区,并进栈内存,顺序执行代码,创建对象,将对象的 ...

  7. jvm中方法区和常量池详解_JVM——内存区域:运行时数据区域详解

    关注微信公众号:CodingTechWork,一起学习进步. 引言 我们经常会被问到一个问题是Java和C++有何区别?我们除了能回答一个是面向对象.一个是面向过程编程以外,我们还会从底层内存管理和垃 ...

  8. jvm中方法区和常量池详解_Java常量池(静态常量池与运行时常量池)

    1.什么是常量 用final修饰的成员变量表示常量,值一旦给定就无法改变! final修饰的变量有三种:静态变量.实例变量和局部变量,分别表示三种类型的常量. Java中的常量池,实际上分为两种形态: ...

  9. JVM堆 栈 方法区详解

    一.栈 每当启用一个线程时,JVM就为他分配一个JAVA栈,栈是以帧为单位保存当前线程的运行状态 栈是由栈帧组成,每当线程调用一个java方法时,JVM就会在该线程对应的栈中压入一个帧 只有在调用一个 ...

最新文章

  1. 怎么DIY一个粒子检测器
  2. QT关联容器QMap,QHash的Key值自动排序问题
  3. 【原】 动态加载dll
  4. MongoDB 文档的更新操作
  5. 基于案例贯通 Spark Streaming 流计算框架的运行源码
  6. 洛谷——P1056 排座椅
  7. python 跳出for循环_python中如何退出for循环
  8. python输出可执行文件_重定向-禁止在Python调用中输出可执行文件
  9. 体验最火的敏捷——SCRUM(厦门,2014.1.4)
  10. springboot整合elasticsearch_Spring Boot学习10_整合Elasticsearch
  11. CSS深入浅出(三)
  12. hash 表 java_java hash表
  13. Java多线程详解(线程池)
  14. Spring:连接池连接数据库报错Unknown system variable ‘tx_isolation‘
  15. 【数字基带信号】基于matlab三阶高密度双极型码【含Matlab源码 990期】
  16. Java并发编程实战 -- 读书笔记
  17. 黑苹果 macos 教程
  18. C++编程语言中重载运算符(operator)介绍
  19. 感知机原理以及python实现
  20. 我的世界服务器无限圈地指令,网易我的世界怎么圈地-怎么圈地指令

热门文章

  1. OpenShift 4 - 安装 OpenShift 集群后如何删除节点或增加新节点
  2. SQL Server上的审计表和数据版本控制
  3. 使用Entity Developer构建ASP.NET Core Web API应用程序
  4. 面向初学者的带有MVC API的Android 管理表CRUD MSSQL
  5. Model和ViewModel之间的通用MVVM数据交换
  6. 使用MSTest v2进行单元测试的并行化
  7. teamspeak3服务器搭建_教你快速便捷的搭建Teamspeak 3 服务器和基友开黑必备!
  8. java 自动生成mybatis文件_如何自动生成Mybatis的Mapper文件详解
  9. php中padding,css中padding填充详解
  10. 图像去雾算法_Matlab:单幅图象的暗原色先验去雾改进算法,能够很好地改进天空或明亮部分色彩失真问题...