方法区和Java堆区一样,同样也是允许被所有的线程共享访问的。方法区中存储了每一个Java类的结构信息,比如:运行时常量池、字段和方法数据、构造函数和普通方法的字节码内容以及类、实例、接口初始化时需要用到的特殊方法等数据。在HotSpot中,方法区仅仅只是逻辑上独立,实际上还是包含在Java堆区的,也就是说,方法区在物理上当然属于Java堆区的一部分。
方法区在JVM启动的时候被创建,并且它的内存空间是可以不连续的。方法区是一块特殊的运行时内存区域,有的开发人员更愿意将其称之为永久代。尽管永久代不会被频繁的执行回收,但如果你不特别指明不需要回收,它还是会对一些数据例如常量池进行回收。