堆 (heap)
堆中存放对象,比如String,堆是线程共有的
栈 (Stack)
栈中存放基础数据类型以及对堆中对象的引用,栈是线程私有的
程序计数器 (pc Register)
程序计数器就是记录当前需要执行的指令地址,就是说每个线程到底执行到哪里了(存档),
所占用空间非常小
方法区 (method Area)
方法区是JVM抽象的规范,元空间和永久代是对该抽象的具体实现,JDK8 之前实现方式
是永久代,当时永久代是堆空间的一部分。
jDK8以后,实现方式是元空间,元空间没有使用堆内存,而是与堆不相连的本地内存区域
理论上,系统内存有多大,元空间就有多大,如果手动限制了大小,也会出现OOM异常
本地方法栈(native method stacks)
本地方法的栈,而不是本地的方法栈,为本地方法提供了专门的栈空间,可以让java来调
用其他类型的语言