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