文章内容参考<<深入理解java虚拟机>>,内容是自己总结的观点,如果有疑问,请参展<<深入理解java虚拟机>>
1.java虚拟机内存区域
1.运行时内存数据区域
1.程序技术器Program Counter Register:(线程私有)
特点:空间小,当前线程所执行的字节码的行号指示器.
解释:虚拟机线程在执行时,需要根据线程计数器的值来选择如何执行下一条指令,例如:分支,循环,异常等
拓展1:每一个处理器内核都只会执行一条线程,每一个线程都会创建一个程序计数器
深入:当虚拟机执行的是java方法,程序计数器记录的是正在执行的字节码指令的地址,如果是native方法,则执行的是null.
拓展2:native方法是java虚拟机调用非java语言的接口,native是关键字 ,被native修饰的方法不用写方法体,因为在外部已经调用其他语言的代码.
native关键字不能与abstract关键字共用,因为native是有方法体的.
2. 虚拟机栈java Virtual Machine Stacks:(线程私有)
特点:先进先出.
解释:用于存放对象引用,以及基本数据类型.
3.本地方法栈Native Method Stack:(线程私有)
特点:虚拟机并没有对他进行规范,所以可以自由实现.
解释:用户存储Native方法
未完待续...