JVM内存结构
JDK1.7
堆区 Heap(1.8多出了String常量池):
所有的对象实例以及数组都要在堆上分配,此内存区域的唯一目的就是存放对象实例
本地-方法栈(1.8运行时常量池):
各种基本数据类型,对象的引用(
入栈时机:被执行的时候 都会创建一个“栈帧,保存的内容:存储局部变量表(包括参数)、操作栈、方法出口等信息。--就是方法的头部信息
出栈时机:方法被执行完。
(永久代)可以简单理解为方法区(本质上两者并不等价)
用于存储已经被虚拟机加载的类信息(即加载类时需要加载的信息,包括版本、field、方法、接口等信息)、final常量、静态变量、构造函数编译器即时编译的代码等
JDK1.8
取消了方法区、方法栈转而代替的是类常量池、运行时常量池,两者组合起来就是元数据的构成了。
这样的好处是方便内存的扩展,本地内存除了电脑上运行的其他程序和JVM占用的内存,剩下的就是直接内存了。