JVM的方法区和永久带是什么关系?
什么是方法区?
方法区(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的方法区和永久带是什么关系?相关推荐
- JVM之 方法区、永久代(PermGen space)、元空间(Metaspace)三者的区别
文章目录 0.前言(JVM 运行时区域) 1.PermGen(永久代) 2.Metaspace(元空间) 3.JDK6 .JDK7.JDK8 内存溢出的示例 4.元空间与本地内存 5.总结 0.前言( ...
- JVM之方法区、永久代(PermGen space)、元空间(Metaspace)三者的区别
JVM体系结构 根据 JVM 规范,JVM 运行时区域大致分为 方法区.堆.虚拟机栈.本地方法栈.程序计数器 五个部分. 1).方法区 方法区是JVM 所有线程共享. 主要用于存储类的信息.常量池.方 ...
- JVM之方法区Mothed Area
JVM之方法区Mothed Area 目录: JVM体系结构概览 JVM之方法区解析 1. JVM体系结构概览 2. JVM之方法区解析 1. 方法区是被所有线程共享,所有字段和方法字节码,以及一些特 ...
- java永久区_Java方法区和永久代
目前有三大Java虚拟机:HotSpot,oracle JRockit,IBM J9. JRockit是oracle发明的,用于其WebLogic服务器,IBM JVM是IBM发明的用于其Websph ...
- 欧尼酱讲JVM(17)——方法区详解有图有真相
目录 位置图解 方法区的理解 方法区在哪里 方法区的基本理解 HotSpot中方法区的理解(演进过程) 方法区的内部结构 图解方法区内部结构 运行时常量池 class文件中常量池的理解 为什么需要常量 ...
- Java栈内存、堆内存、方法区对对象和引用的关系
问题:Java栈内存.堆内存.方法区对对象和引用的关系 答案: 1.单个对象 如图所示: (1)首先类加载器加载要运行的类,首先将main方法加载进方法区,并进栈内存,顺序执行代码,创建对象,将对象的 ...
- jvm中方法区和常量池详解_JVM——内存区域:运行时数据区域详解
关注微信公众号:CodingTechWork,一起学习进步. 引言 我们经常会被问到一个问题是Java和C++有何区别?我们除了能回答一个是面向对象.一个是面向过程编程以外,我们还会从底层内存管理和垃 ...
- jvm中方法区和常量池详解_Java常量池(静态常量池与运行时常量池)
1.什么是常量 用final修饰的成员变量表示常量,值一旦给定就无法改变! final修饰的变量有三种:静态变量.实例变量和局部变量,分别表示三种类型的常量. Java中的常量池,实际上分为两种形态: ...
- JVM堆 栈 方法区详解
一.栈 每当启用一个线程时,JVM就为他分配一个JAVA栈,栈是以帧为单位保存当前线程的运行状态 栈是由栈帧组成,每当线程调用一个java方法时,JVM就会在该线程对应的栈中压入一个帧 只有在调用一个 ...
最新文章
- 怎么DIY一个粒子检测器
- QT关联容器QMap,QHash的Key值自动排序问题
- 【原】 动态加载dll
- MongoDB 文档的更新操作
- 基于案例贯通 Spark Streaming 流计算框架的运行源码
- 洛谷——P1056 排座椅
- python 跳出for循环_python中如何退出for循环
- python输出可执行文件_重定向-禁止在Python调用中输出可执行文件
- 体验最火的敏捷——SCRUM(厦门,2014.1.4)
- springboot整合elasticsearch_Spring Boot学习10_整合Elasticsearch
- CSS深入浅出(三)
- hash 表 java_java hash表
- Java多线程详解(线程池)
- Spring:连接池连接数据库报错Unknown system variable ‘tx_isolation‘
- 【数字基带信号】基于matlab三阶高密度双极型码【含Matlab源码 990期】
- Java并发编程实战 -- 读书笔记
- 黑苹果 macos 教程
- C++编程语言中重载运算符(operator)介绍
- 感知机原理以及python实现
- 我的世界服务器无限圈地指令,网易我的世界怎么圈地-怎么圈地指令
热门文章
- OpenShift 4 - 安装 OpenShift 集群后如何删除节点或增加新节点
- SQL Server上的审计表和数据版本控制
- 使用Entity Developer构建ASP.NET Core Web API应用程序
- 面向初学者的带有MVC API的Android 管理表CRUD MSSQL
- Model和ViewModel之间的通用MVVM数据交换
- 使用MSTest v2进行单元测试的并行化
- teamspeak3服务器搭建_教你快速便捷的搭建Teamspeak 3 服务器和基友开黑必备!
- java 自动生成mybatis文件_如何自动生成Mybatis的Mapper文件详解
- php中padding,css中padding填充详解
- 图像去雾算法_Matlab:单幅图象的暗原色先验去雾改进算法,能够很好地改进天空或明亮部分色彩失真问题...