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


Class文件常量池
Class文件常量池也叫常量池。Java 文件编译后会生成 class 文件,class 文件中除了包含类的版本、字段、方法、接口等描述信息外,还有一项信息是常量池表(也就是Class文件常量池&#x

本文总结了Java虚拟机中的方法区、Class文件常量池、运行时常量池和字符串常量池。方法区在JDK6及以前通过永久代实现,后被元空间取代。Class文件常量池在类加载后存入运行时常量池,位于方法区。字符串常量池从JDK7开始存放在堆中,通过`String.intern()`方法可交互。运行时常量池在JDK7以后仍存在于方法区,字符串常量池保持在堆。
最低0.47元/天 解锁文章

853

被折叠的 条评论
为什么被折叠?



