2、虚拟机栈
线程私有,声明周期和线程相同,它描述了Java方法执行的内存模型。每个方法在执行的同时会创建一个栈帧(Stack Frame),用于存储局部变量表,动态链接等信息。...从调用到调用完成对应的是一个栈帧从虚拟机栈入栈到出栈的过程。
局部变量表存放了编译器可知的基本类型、独享引用。...(jdk1.8后,常量池也是存放在堆中,因为永久代废除了)
5、方法区
线程共享用于存储被虚拟机加载的类信息、变量、静态变量既即时编译的代码,JVM规范是将它和堆进行分开。...场景:
1、调用Classs.forName(“类的全限路径”)加载类时
2、ClassLoader.findSystemClass方法调用时
3、ClassLoader.loadClass...,在遍历的时候判断是否存在下一个元素时会进行:expectModcount和modCount的判断,如果不相等,则直接抛出异常。