JVM中的方法区
方法区存储什么?

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

1、类型信息

  • 对每个加载的类型(类class、接口interface、枚举、注解)jvm必须在方法区中存储下边类型信息
  • 这个类型的完整有效名
  • 这个类型直接父类的完整有效名
  • 这个类型的修饰符(public、abstract、final的某个子集)
  • 这个类型直接接口的一个有序列表

2、方法信息

  • JVM必须保存所有方法的以下信息
  • 方法名称
  • 方法参数的数量和类型
  • 方法的修饰符
  • 方法的字节码、操作数栈、局部变量表、
  • 异常表
  • 与java堆一样、各个线程共享的内存区域
  • 在JVM启动的时候创建
  • 方法区的大小,和堆空间一样,可以选择固定或者可扩展
  • 大小决定了系统可以保存多少个类

常量池和常量池表
常量池:存储的数据类型(数量值、字符串值、类引用、字段引用、方法引用)

运行时常量池:

  • 方法区的一部分
  • 常量池表是class文件的一部分,用于存放编译期间生存的各种字面量符号引用,在类加载后放到方法区的运行时常量池中。
  • 具备动态性
  • 符号引用(栈帧中的动态链接)
    常量池表(存放在运行时常量池中):一个有效的字节码文件中除了包含类的版本信息、字段、方法、以及接口等描述信息外,还包含一项信息就是常量池表,包括各种字面量和对类型、域和方法的符号引用。
    栈、堆、方法区交互

JVM中的方法区的更多相关文章

  1. (转)java中的方法区

    首先要说明的是,此文章转载自 http://blog.csdn.net/zzhangxiaoyun/article/details/7518917 谢谢作者.是本人认为对方法区解释得比较清楚的一篇文章 ...

  2. Class实例在堆中还是方法区中?

    1.JVM中OOP-KLASS模型 在JVM中,使用了OOP-KLASS模型来表示java对象,即:1.jvm在加载class时,创建instanceKlass,表示其元数据,包括常量池.字段.方法等 ...

  3. Java 底层机制(JVM/堆/栈/方法区/GC/类加载)

    转载:https://www.jianshu.com/p/ae97b692614e?from=timeline JVM体系结构 JVM是一种解释执行class文件的规范技术.   JVM体系结构 我翻 ...

  4. JVM堆 栈 方法区详解

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

  5. JVM学习笔记——方法区

    方法区 Method Area 方法区在逻辑上属于堆的一部分,但可以看做是一块独立于 Java 堆的内存空间.所有的字段和方法字节码,以及一些特殊的方法,如构造函数,接口代码在此定义.所有定义方法的信 ...

  6. JVM(一):方法区

    方法区(Method Area) 在JVM中,类型信息和类静态变量都保存在方法区中,需要注意的一点是,常量池也存放于方法区中. 类型信息包括: 1.类型的全名(The fully qualified ...

  7. HotSpot Java虚拟机中的“方法区”“持久代”“元数据区”的关系?

    Sun/Oracle JDK的HotSpot VM中,直到JDK7都有“持久代”(Permanent Generation,简称PermGen).也称为方法区.Oracle JDK8的HotSpot ...

  8. 7.JVM调优-方法区,堆,栈调优详解

    通常我们都知道在堆空间新生代Eden区满了,会触发minor GC, 在老年代满了会触发full GC, 触发full GC会导致Stop The World, 那你们知道还有一个区域满了一会触发Fu ...

  9. java虚拟机 jvm java堆 方法区 java栈

    java堆是java应用程序最密切的内存空间.几乎所有的对象都存在堆中.java堆完全自动化管理,通过垃圾回收机制,垃圾对象会自动清理,不需要显式释放. 根据java垃圾回收机制的不同,java堆可能 ...

随机推荐

  1. LyScript 内存交换与差异对比

    LyScript 针对内存读写函数的封装功能并不多,只提供了内存读取和内存写入函数的封装,本篇文章将继续对API进行封装,实现一些在软件逆向分析中非常实用的功能,例如内存交换,内存区域对比,磁盘与内存 ...

  2. python包合集-cffi

    一.cffi cffi是连接Python与c的桥梁,可实现在Python中调用c文件.cffi为c语言的外部接口,在Python中使用该接口可以实现在Python中使用外部c文件的数据结构及函数. 二 ...

  3. identity4 系列————开篇概念

    前言 identity4 其实是openid connection, 那么我们还听说过openid 还有 oauth 2.0 那么下面就介绍一下Oath 2.0和openid 还有 openid co ...

  4. Linux 禁止root远程登录解决办法

    linux中root用户是超级管理员,可以针对root用户暴力破解密码,这样很不安全,工作中我们一般禁止root用户直接远程登陆,开设一个或多个普通用户,只允许登陆普通用户,如果有需要用root用户, ...

  5. CF1511G Chips on a Board (倍增)

    题面 原题题面 转化方便版题意: 有 n n n 堆石子,第 i i i 堆有 c i ∈ [ 1 , m ] c_i\in [1,m] ci​∈[1,m] 个石子,有 q q q 次询问,每次询问给 ...

  6. C#基础_XML文件读写

    使用C#对XML文件进行操作,包括生成一个XML文档,以及读取XML文档中的内容,修改某个元素中的内容 using System; using System.Collections.Generic; ...

  7. openstack中Nova组件简解

    一.Nova组件概述 计算节点通过Nova Computer进行虚拟机创建,通过libvirt调用kvm创建虚拟机,nova之间通信通过rabbitMQ队列进行通信. Nova位于Openstack架 ...

  8. SDIO移植

    1.拷贝 STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Utilities\STM32_EVAL\STM324x7I_EVAL 目录下的stm324x7i_eval_sdio_ ...

  9. kingbaseES V8R6集群备份恢复案例之---备库作为repo主机执行物理备份

    ​ 案例说明: 此案例是在KingbaseES V8R6集群环境下,当主库磁盘空间不足时,执行sys_rman备份,将集群的备库节点作为repo主机,执行备份,并将备份存储在备库的磁盘空间. 集群架构 ...

  10. git rebase合并多个commit总结

    git rebase 合并多个commit 方法 在开发过程中,有时一个任务会分几次commit提交,这样可能对于有些分支要cherry pick时会比较麻烦,这是我们可以通过git rebase 将 ...