常量池到底在什么区,求告知

查百度,有说在栈区,有说在堆 还有说在方法区。我已经蒙圈了,到底在什么区,到底多少种常量池,静态区又是什么

JAK1.6在方法区
JAK1.7放在堆里面
JAK1.8以后放在一个独立空间里面,叫做“元空间”

方法区,最新的jdk9,又有变化。放到一个专门的地方

在方法区的。方法区:用于存储类信息,常量,静态变量等信息,是线程共享区域。

在方法区,,,,原因是方法去存储类的信息,也包括类的字节码,,,,常量经常以明文的形式出现在类中,,

所以,常量池放在在方法区 ,能更省空间。

栈是线程私有的,存储局部变量(特指方法中的变量),,
如果你认为某个方法中的参数也算是常量的话,,,那么它存在栈中,,
运行完就释放了,,不会保留很久。