我也前前后后找了些资料,jdk7以前,方法区还在,存储的是类信息、常量、静态变量;
    jdk8以后,方法区被删除,永久代一分为二(方法区和永久代的关系:前者是一种规范,后者是前者的实现,类似jvm和hotspot 的关系),一部分成了元空间(直接内存),存储类信息;另一部分被划到了堆中,存储静态变量和常量; 另外,在《规范》中,方法区被描述为堆的一个逻辑部分,但方法区还有一个名字非堆(non heap),因此即使在jdk7时,也可以认为静态变量是存储在堆中的;