虚拟机之方法区

时间:2022-12-27 17:21:38

1.方法区别名非堆(non-heap) 为各个线程共享的内存区域,存储已被虚拟机加载的类信息、常量、静态变量、及时编译器编译后的代码等数据。
2.永久代 hotspot特有概念=方法区的实现,1.7将字符串常量池偶从永久代移除,1.8整个移除,概念改为元空间, ‑XX:MaxPermSize 参数失去了意义,取而代之的是-XX:MaxMetaspaceSize。

3.不需要连续的内存和可以选择固定大小和可以扩展,还可以选择不实现垃圾收集。但是回收确实是必要的。

4.运行时常量池= part of 方法区
5.has 动态性,可以在运行期间将新的常量放入池中,例如:string 的intern()方法

6.string的intern()方法就是扩充常量池的一个方法;当一个String实例str调用intern()方法时,java会查找常量池中是否又相同unicode的字符串常量,如果有,返回引用,如果没有在常量池中增加一个unicode的字符串常量并返回他的引用。