在JDK6.0及之前版本,字符串常量池是放在Perm Gen区(也就是方法区)中;
在JDK7.0版本,字符串常量池被移到了堆中了。至于为什么移到堆内,大概是由于方法区的内存空间太小了。
在永久代移除后,字符串常量池也不再放在永久代了,但是也没有放到新的方法区——元空间里,而是留在了堆里。运行时常量池当然是随着搬家到了元空间里,毕竟它是装类的重要等信息的,有它的地方才称得上是方法区。
Jdk8.0已经直接取消了Perm区域,而新建立了一个元区域,应该是JDK开发者认为Perm区域已经不适合现在的Java发展了。