2025-11-20 06:09:58
方法区主要存的是类的元数据,包括类的方法、静态变量、静态块这些代码结构。比如你写的public class A{static int a}{public void test}{static void show}{static block}这些代码编译后都会存在方法区里。根据JVM规范v8版本,方法区初始大小是16MB,存放的是类的元数据信息,包括类名、父类、接口、字段、方法、访问权限等。比如类的访问权限修饰符public private protected这些都会存在方法区里,控制谁可以访问这个类的方法。
为什么方法区要存这些信息呢?因为JVM在运行时需要快速定位类的各个方法,就像图书馆找书需要书名和分类号一样。方法区里的元数据就像图书目录,告诉JVM这个类有多少个方法、每个方法需要什么参数、谁可以调用这些方法。比如当执行new A时,JVM先在方法区找到A类的信息,确认这个类有test方法,然后检查当前线程是否有权限调用这个方法。根据JVM官方文档,方法区占用的内存大小会根据类数量动态调整,比如有100个类时,每个类平均占用约2KB元数据,总共需要200KB内存。如果方法区没存这些信息,JVM运行时就会找不到对应的方法,就像找不到书一样无法执行代码。
本题链接: