方法区是Java虚拟机内存中的一部分,用于存储与类相关的各种信息。它包括类信息、静态变量、编译后的字节码、运行时常量池、类加载器信息以及其他相关数据。方法区是所有线程共享的,其大小通常比堆小,如果不够用可能会导致java.lang.OutOfMemoryError错误。
在JDK8之前,静态成员(静态变量和静态方法)都是存储在方法区(永久代)中的静态区中(这里指类被加载后,静态成员的存储位置)。但在JDK8之后,永久代被移除了,取而代之的是元空间(metaspace)。但元空间中存储的主要是.class文件的元数据信息,静态成员的存储位置由方法区转到了堆内存(heap)中。
1. 存储内容:类信息:方法区存储了每个类的类描述信息,这包括类的名称、访问修饰符、父类、接口列表、字段信息以及方法信息等。这些信息是JVM在运行时识别和操作类的基础。静态变量:静态变量(也称为类变量)存储在方法区中。这些变量属于类本身,而不是类的任何实例。因此,无论创建多少个类的实例...
聊到JAVA中的方法,大多数人对于方法存储在方法区还是栈区(虚拟机栈)是很迷茫的。其实方法是存在方法区的下面我们就细细说一下JVM中的 方法区 VS 栈区方法区:用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据,方法编译出的字节码也是保存在这 ...
方法区:存放类元信息,比如完整类名全称,public,abstract等修饰符,实现的接口有序列表等;方法信息,比如修饰符,返回类型等;JIT代码缓存,也就是被即时编译器编译后的热点代码,用于提高性能;域信息,也就是属性信息,比如修饰符,类型等;运行时常量池,字节码文件中常量池的运行时表现,类似符号...