java-基础-虚拟机jvm
来源:互联网 发布:c语言初学者百题大战 编辑:程序博客网 时间:2024/06/06 02:59
虚拟机结构:
2.Program CounterRegister
程序计算器
类似于PC寄存器,是一块较小的内存区域,通过程序计数器中的值寻找要执行的指令的字节码,由于多线程间切换时要恢复每一个线程的当前执行位置,所以每个线程都有自己的程序计算器。这一个区域不会有OutOfMemeryError。当执行Java方法时,这里存储的执行的指令的地址,如果执行的是本地方法,这里的值是Undefined
类似于PC寄存器,是一块较小的内存区域,通过程序计数器中的值寻找要执行的指令的字节码,由于多线程间切换时要恢复每一个线程的当前执行位置,所以每个线程都有自己的程序计算器。这一个区域不会有OutOfMemeryError。当执行Java方法时,这里存储的执行的指令的地址,如果执行的是本地方法,这里的值是Undefined
3.Java Stack
Ø虚拟机栈
虚拟机栈也是线程私有的,每创建一个线程,虚拟机就会为这个线程创建一个虚拟机栈,虚拟机栈表示Java方法执行的内存模型,每调用一个方法,就会生成一个栈帧(Stack Frame)用于存储方法的本地变量表、操作栈、方法出口等信息,当这个方法执行完后,就会弹出相应的栈帧。
如果请求的栈的深度过大,虚拟机可能会抛出StackOverflowError异常,如果虚拟机的实现中允许虚拟机栈动态扩展,当内存不足以扩展栈的时候,会抛出OutOfMemoryError异常。
虚拟机栈也是线程私有的,每创建一个线程,虚拟机就会为这个线程创建一个虚拟机栈,虚拟机栈表示Java方法执行的内存模型,每调用一个方法,就会生成一个栈帧(Stack Frame)用于存储方法的本地变量表、操作栈、方法出口等信息,当这个方法执行完后,就会弹出相应的栈帧。
如果请求的栈的深度过大,虚拟机可能会抛出StackOverflowError异常,如果虚拟机的实现中允许虚拟机栈动态扩展,当内存不足以扩展栈的时候,会抛出OutOfMemoryError异常。
4.method Frame
Ø方法帧
栈帧分为三部分:局部变量区(Local Variables)、操作数栈(Operand Stack)和帧数据区(FrameData)。
栈帧分为三部分:局部变量区(Local Variables)、操作数栈(Operand Stack)和帧数据区(FrameData)。
本地方法栈
与虚拟机栈类似,只是是执行本地方法时使用的
6.Method Area
Ø方法区
用于存储已被虚拟机加载的类型信息、常量、静态变量、即时编译后的代码等信息。
方法区是线程间共享的,当两个线程同时需要加载一个类型时,只有一个类会请求ClassLoader加载,另一个线程会等待。
用于存储已被虚拟机加载的类型信息、常量、静态变量、即时编译后的代码等信息。
方法区是线程间共享的,当两个线程同时需要加载一个类型时,只有一个类会请求ClassLoader加载,另一个线程会等待。
7.Heap
堆
虚拟机中用于存放对象与数组实例的地方,垃圾回收的主要区域就是这里(还可能有方法区)。
如果垃圾收集算法采用按代收集(目前大都是这样),这部分还可以细分为新生代和老年代。
新生代又可能分为Eden区,From Survivor区和To Survivor区,主要是为了垃圾回收。所有的线程共享Java堆,在这里还可以划分线程私有的缓冲区(Thread Local Allocation Buffer,TLAB)
Java堆只要求逻辑上是连续的,在物理空间上可以不连续。
ØJDK1.4中引用了NIO,并引用了Channel与Buffer,可以使用Native函数库直接分配堆外内存,并通过一个存储在Java堆里面的DirectByteBuffer对象作为这块内存的引用进行操作。
9.简述JVM
JVM:
-----------------
1.JVM: java virtual machine.
2.class file
*.class
3.ClassLoader
4.runtime data area
运行时数据区。
1.Method area : 方法区.(shared)
供所有线程共享.
2.heap(shared):
供所有线程共享.
3.java stack(栈区)
独占的。
4.native method stack(本地方法栈)
独占
5.Program counter register
程序计数器.
5.execute engine
执行引擎。
6.native interface
本地接口
7.native libraries
本地类库
0 0
- java-基础-虚拟机jvm
- JVM基础 之温绍锦讲Java虚拟机基础
- Java(JVM)虚拟机结构基础
- JVM虚拟机基础
- Java基础:JVM(Java 虚拟机)的详细讲解
- Java基础:JVM(Java 虚拟机)的详细讲解
- JVM虚拟机基础:Java对象大小与类型详解
- JVM基础 之Java HotSpot虚拟机中的内存管理
- JVM基础 之Java HotSpot虚拟机中的内存管理
- JVM(JAVA虚拟机介绍)
- JVM(JAVA虚拟机介绍)
- JVM(JAVA虚拟机介绍)
- JVM(JAVA虚拟机介绍)
- JVM(JAVA虚拟机介绍)
- JVM(JAVA虚拟机)
- Java虚拟机(JVM)
- JVM(JAVA虚拟机介绍)
- JVM(JAVA虚拟机)
- 用background-image:url();属性设置背景图片,为什么总是显示不出来?
- android studio Session 'app': Error Installing APK解决方案
- clamp.js 的使用---超出省略 (翻译)
- 13个有用的渗透测试资源博客
- TO_DATE函数索引报错ORA-01743
- java-基础-虚拟机jvm
- unity lightmapping “黑丝” 错误
- const的用法,特别是用在函数后面
- HTML5本地存储——Web SQL Database
- c++中的前向声明
- Mysql—explain的参数详解及用法
- 如何快速入门Windows编程
- Java的多线程:Thread类的Join()方法
- C++多线程编程入门&进阶总结