本章节多结合图解

细化

方法区是一个抽象的概念,在JDK1.8之前的实现是Perm Space,JDK1.8及之后的实现是Meta Space.
方法区被所有线程所共享,方法区里装 class的结构
区分 Perm Space 和 Meta Space:
结合GC, 一直创建字符串常量,观察 堆 大小变化
如果FGC了或者堆大小变大。则是1.8+,则是 MetaSpace,否则是Perm Space
放置 .class文件的常量池里的内容

堆在线程之前共享。


虚拟机栈用来执行Java方法 , 每个线程对应一个栈;
栈里包括frame (栈帧) ; 每个方法对应一个栈帧
栈帧用来存储数据、执行动态连接

等同于java自身的栈,不过是C/C++写的本地方法栈 JNI 本地方法接口 java native interface

程序计数器PC : 存放指令的位置
虚拟机运行
while not end:
取program count中的位置,找到对应的指令
执行该指令
Program count ++

JVM可以直接访问的内核空间的内存,由操作系统管理;NIO相关,提高效率,零拷贝,