Bootstrap

Java中静态成员及常量池的存储位置

Java中,静态成员的存储位置

JDK1.8以前

在JDK1.8以前,静态成员存储在方法区永久代)中,此时方法区的实现叫做永久代

JDK1.8以后

在JDK1.8以后,永久代被移除,此时方法区的实现更改为元空间,但由于元空间主要用于存储字节码文件,因此静态成员的存储位置从方法区更改到了堆内存中

Java中,常量池的存储位置

JDK1.6及以前

在JDK1.6及以前,常量池存储在方法区永久代)中

JDK1.7

在JDK1.7中,方法区被整合到堆内存中,常量池存储在堆内存

JDK1.8以后

在JDK1.8后,方法区从堆内存中独立出来,常量池存储在方法区中(但此时永久代被移除,方法区的实现更改为元空间

;