深入理解java虚拟机阅读笔记
深入理解 java 虚拟机阅读笔记 Jdk= java 语言 +jvm+api Java 技术体系分为 4 个平台: java card,me,se,me Java 虚拟机在 java 程序执行过程把 jvm 的内存划分位若干不同数据区域。 这些区域有各自的用途,以及创建和销毁时间 。有些区域 随虚拟机的进程的启动而存在 , 有些区域依赖用户线程的启动和结束而建立和销毁 。 由所有线程共享的数据区 --- 方法区、堆 线程隔离的数据区 --- 虚拟机栈、本地方法栈、程序计数器 程序计数器 较小的内存 :当前线程所执行的字节码的行号指示器。分支、循环、跳转、异常处理、线程恢复等都需要依赖选取下一条指令。 Java 虚拟机的多线程 :通过线程轮流切换并分配处理器执行时间的方式来实现。任一时刻,一个处理器(对于多核处理器是一个内核)只会执行一条线程中的指令 。 线程切换后为了恢复正确的执行位置,每条线程都需要一个独立的程序计数器。各个线程之间的计数器互不影响,独立存储,是线程私有的内存。 若正在执行 native 方法,则程序计数器为空 ,这个区域也是唯一一个没有规定 OOM 的区域。 虚拟机栈 :线程私有, 生命周期和线程一样 。 每个方法被执行的时候同时创建一个 栈帧 :用来存储 局部变量表 、 操作栈、动态链接、方法出口 等。 方法从调用到完成