方法区
方法区是 JVM 规范中提出一个概念,不同的 Java 虚拟机都有自己的方法区,但是对方法区的具体实现细节不受《Java虚拟机规范》约束,所以不用的 Java 虚拟机都有各自实现方法区的方式
在我们一直使用的 Java 虚拟机(HotSpot)中,在 JDK 6 及以前是通过永久代来实现方法区的,此时的方法区存放已被加载的类信息、常量、静态变量、即时编译器编译后的代码缓存等数据。
到了 JDK 7 开始逐步废弃永久代,首先将永久代中的常量、静态变量、字符串常量池移动到了 Java 堆中。
到了 JDK 8,永久代被正式废除,并使用在本地内存中实现的元空间来代替永久代,把 JDK 7 中永久代的剩余内容(主要是已被加载的类信息)全部移到元空间中。
Class文件常量池
Class文件常量池也叫常量池。Java 文件编译后会生成 class 文件,class 文件中除了包含类的版本、字段、方法、接口等描述信息外,还有一项信息是常量池表(也就是Class文件常量池&#x