【Java】Jvm方法区和常量池

232 阅读1分钟

1.1 方法区

方法区是存储已经被虚拟机加载的类信息(class文件)、常量和静态变量。 在JDK1.7是在永久代,在JDK1.8是在原空间。

1.2 常量池

常量池分为静态(class)常量池运行时常量池运行时的常量池是属于方法区的一部分,而静态常量池是Class文件的。 常量池中存储的内容image.png

1.2.1 静态常量池

用于存放编译器compile生成的各种字面量和符号引用。 符号引用存储的是字符串在常量池中的索引。

1.2.2 运行时常量池

静态常量池内容在类初始化后存入运行时常量池。相对于静态常量池,运行时常量池具有动态性,在程序运行的时候可能将新的常量放入运行时常量池中,比如使用String类的intern方法。 运行时常量池还包含**自动包装类Byte,Short,Integer,Long,Character在-128到127之间值,**这小部分也叫缓冲池。