什么是方法区?

方法区(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是对方法区的不同实现,是实现层面的东西。

最新文章

  1. 弱省互测#0 t3
  2. CCNET+MSBuild+SVN实现每日构建
  3. Spark 1.6以后的内存管理机制
  4. BitNami一键安装Redmine(转)
  5. POJ 2449 A*+SPFA
  6. VirtualBox的四种网络连接方式详解
  7. SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型
  8. android环境下解决java.io.IOException: Malformed ipv6异常的方法
  9. 玩转Web之easyui(一)-----easy ui datagird 分页
  10. IE9 浏览器无法捕获中键事件
  11. Java NIO 学习笔记五 缓冲区补充
  12. instr函数的"重载"
  13. C++标准模板库(STL)之Set
  14. CleanMyMac X教程之-安装卸载
  15. Ubuntu、deepin 安装 mysql
  16. ChinaCock界面控件介绍-CCNavigateTitle
  17. c# 自定义log4net过滤器
  18. 软件公司的两种管理方式 总体来说,这个世界上存在两种不同的软件公司的组织结构。我把他们叫做 Widget Factory(小商品工厂) 和 Film Crews(电影工作组
  19. python-函数中的参数类型和可变参数解析
  20. 【RL系列】Multi-Armed Bandit问题笔记

热门文章

  1. 为什么在linux系统下安装anaconda的时候会报错
  2. 软件架构期末复习(Struts2+Spring+Hibernate)
  3. HDU 4544 湫湫系列故事——消灭兔子 (优先队列)
  4. Vue ui创建项目
  5. Vuex项目实战store
  6. [SDOI2012] Longge的问题 - 欧拉函数
  7. AI: Uninformed search
  8. Linux - pip 安装使用说明
  9. 用MyEclipse远程debug
  10. kmp算法散记