目录 常用jvm 体系结构 本地方法栈 方法区 程序计数器 常用jvm 目前市面上普遍使用的JVM大致有三种 Sun公司的HotSpot——绝大多数java开发者都用的是这款,绝对的主力 Oracle公司的JRockit—
目录
- 常用jvm
- 体系结构
- 本地方法栈
- 方法区
- 程序计数器
目前市面上普遍使用的JVM大致有三种
下面以HotSpot展开描述
体系结构Java文件最终在JVM中执行,JVM运行在操作系统之上,它与硬件并没有直接的交互
(灰色区域为线程私有,不存在垃圾回收;深色区域为共享区域,存在垃圾回收)
堆&栈&方法区----戳我
本地方法栈本地方法是线程私有的
本地方法(native method):凡是带了native关键字的,说明java的作用范围达不到,会通过native调用操作系统C语言的库
本地方法区:里面运行带native关键字的本地方法,并由执行引擎(Excutrion Engine)执行。执行引擎最终会调用本地方法库(Native Libraies)执行
目前很少用JNI进行通信,更多的使用Socket、WebService等等
方法区方法区是线程共享的运行时内存区域,它存储了每一个类的结构信息。运行时常量池、字段、方法数据、构造函数和普通方法的字节码内容都存在于方法区中。
实例变量存在堆内存中,和方法区无关
程序计数器每个线程都有一个程序计数器,是线程私有的,就是一个指针指向方法区中的方法字节码(用来存储指向类似于一条指令的地址,也即将要执行的指令代码),用于执行引擎读取下一条指令。它是一块非常狭小的空间。