jvm之方法区解读(下)

简介: jvm之方法区解读(下)

运行时常量池

  • 运行时常量池(Runtime Constant Pool)是方法区的一部分。
  • 常量池表(Constant Pool Table)是Class文件的一部分,用于存放编译期生成的各种字面量与符号引用,这部分内容将在类加载后存放到方法区的运行时常量池中。
  • 运行时常量池,在加载类和接口到虚拟机后,就会创建对应的运行时常量池。
  • JVM为每个已加载的类型(类或接口)都维护一个常量池。池中的数据项像数组项一样,是通过索引访问的。
  • 运行时常量池中包含多种不同的常量,包括编译期就已经明确的数值字面量,也包括到运行期解析后才能够获得的方法或者字段引用。此时不再是常量池中的符号地址了,这里换为真实地址。
  • 运行时常量池,相对于Class文件常量池的另一重要特征是:具备动态性。+

Java语言并不要求常量一定只在编译期才能产生,也就是说,并非预置入 Class 文件中常量池的内容才能进入方法区运行时常量池,运行期间也可以将新的常量池放入池中。

  • 运行时常量池类似于传统编程语言中的符号表(symboltable),但是它所包含的数据却比符号表要更加丰富一些。
  • 当创建类或接口的运行时常量池时,如果构造运行时常量池所需的内存空间超过了方法区所能提供的最大值,则JVM会抛OutOfMemoryError异常。

方法区使用举例

1. public class MethodAreaDemo {
2. public static void main(String args[]) {
3. int x = 500;
4. int y = 100;
5. int a = x / y;
6. int b = 50;
7.         System.out.println(a+b);
8.     }
9. }

相关文章
|
2月前
|
存储 安全 Java
JVM常见面试题(二):JVM是什么、由哪些部分组成、运行流程,JDK、JRE、JVM关系;程序计数器,堆,虚拟机栈,堆栈的区别是什么,方法区,直接内存
JVM常见面试题(二):JVM是什么、由哪些部分组成、运行流程是什么,JDK、JRE、JVM的联系与区别;什么是程序计数器,堆,虚拟机栈,栈内存溢出,堆栈的区别是什么,方法区,直接内存
JVM常见面试题(二):JVM是什么、由哪些部分组成、运行流程,JDK、JRE、JVM关系;程序计数器,堆,虚拟机栈,堆栈的区别是什么,方法区,直接内存
|
2月前
|
存储 缓存 Java
JVM中的方法区
这篇文章介绍了JVM中方法区的概念和作用,包括它所存储的内容(类型信息、常量、静态变量、编译后的代码缓存),常量池与运行时常量池的功能,以及方法区与栈、堆的交互关系。
JVM中的方法区
|
3月前
|
Java 编译器 运维
开发与运维测试问题之在JVM中方法区也被称之为什么如何解决
开发与运维测试问题之在JVM中方法区也被称之为什么如何解决
21 1
|
3月前
|
存储 设计模式 监控
Java面试题:简述JVM的内存结构,包括堆、栈、方法区等。栈内存优化的方法有 哪些?
Java面试题:简述JVM的内存结构,包括堆、栈、方法区等。栈内存优化的方法有 哪些?
36 0
|
3月前
|
存储 算法 Java
Java面试题:解释JVM的内存结构,并描述堆、栈、方法区在内存结构中的角色和作用,Java中的多线程是如何实现的,Java垃圾回收机制的基本原理,并讨论常见的垃圾回收算法
Java面试题:解释JVM的内存结构,并描述堆、栈、方法区在内存结构中的角色和作用,Java中的多线程是如何实现的,Java垃圾回收机制的基本原理,并讨论常见的垃圾回收算法
30 0
|
5月前
|
存储 Java
JVM方法区详细定义
JVM方法区详细定义
22 0
|
5月前
|
存储 Java 编译器
JVM之方法区的详细解析
JVM之方法区的详细解析
28 0
JVM之方法区的详细解析
|
5月前
|
存储 监控 安全
JVM工作原理与实战(二十二):方法区的垃圾回收
JVM作为Java程序的运行环境,其负责解释和执行字节码,管理内存,确保安全,支持多线程和提供性能监控工具,以及确保程序的跨平台运行。本文主要介绍了Java的内存管理和自动垃圾回收、方法区的垃圾回收等内容。
62 0
|
5月前
|
存储 监控 安全
JVM工作原理与实战(十九):运行时数据区-方法区
JVM作为Java程序的运行环境,其负责解释和执行字节码,管理内存,确保安全,支持多线程和提供性能监控工具,以及确保程序的跨平台运行。本文主要介绍了方法区、方法区在Java虚拟机的实现、类的元信息、运行时常量池、字符串常量池、静态变量的存储等内容。
59 0
|
5月前
|
存储 Java 编译器
【JVM】深入了解JVM方法区
【JVM】深入了解JVM方法区
98 0