常量池分类
常量池大体可以分为:静态常量池,运行时常量池。
- 静态常量池 存在于class文件中。比如经常使用的javap -verbose中,常量池总是在最前面把?
- 运行时常量池 在class文件被加载进了内存之后,常量池保存在了
方法区堆中。通常说的常量池,指的是运行时常量池。所以呢,讨论的都是运行时常量池
class常量池 / 静态常量池
我们写的每一个Java类被编译后,就会形成一份class文件;class文件中除了包含类的版本、字段、方法、接口等描述信息外,还有一项信息就是常量池(constant pool table),用于存放编译器生成的各种 字面量 (Literal)和 符号引用 (Symbolic References),每个class文件都有一个class常量池。