深入学习JVM之一
2018-02-28 10:07
141 查看
1、什么是JVM ?
—–JVM,Java Virtual Machine,中文名是Java虚拟机,正如它的名字,是一个虚拟机器,来模拟通用的物理机。JVM是一个标准,一套规范,JVM主要定义了二进制class文件和JVM指令集和数据的内部表示和存储等
2、定义
—–程序计数器 (PC):可以看做是当前线程执行字节码的行号指示器。字节码解释器工作的时候就是通过这个计数器的值来选取下一条需要执行的字节码指令, 分支, 循环、跳转、异常处理、线程恢复等基础功能依赖计数器完成。
—–虚拟机栈:和计数器一样, 也是线程私有的,生命周期同线程一致。每个方法在执行时,都会创建一个栈帧,用于存储局部变量表、操作数栈、动态链接、方法出口等信息。方法调入则入栈, 方法执行完则出站。局部变量表存储各种基本类型数据(java的8种,其中long,double占用2个局部变量控件,其余数据占用1个)、对象引用(reference类型)。局部变量表所需的内存空间在编译期间完成分配,当进入一个方法时, 这个方法需要在帧中分配多大的局部变量空间是完全确定的。在方法运行期间是不会改变局部变量表的大小的。
—–本地方法栈:此栈和JVM栈作用非常类似, 不同在于本地方法栈为虚拟机使用到的Native方法服务, 而JVM栈则是为Java执行的方法服务。Sun HotSpot虚拟机, 直接把本地方法栈和虚拟机栈合二为一。本地方法栈也会抛出StackOverFlowError和OutOfMemoryError异常。
—–Java堆:是JVM管理内存中最大的一块。被所有线程共享一块区域。堆是GC垃圾收集器管理的主要区域。从内存回收角度看, java堆被分为新生代、老年代, 再细致一点有其他的划分。这些目的主要就是更快的分配和回收内存。
3、支持
—–对java Library提供一下支持:
–反射 java.lang.redflect
–classLoader 类装载器
–初始化class和interface
–安全相关 java.security
–多线程
–弱引用
关于JVM的认识,目前先总结这些,后边会有更加详细的解释。
—–JVM,Java Virtual Machine,中文名是Java虚拟机,正如它的名字,是一个虚拟机器,来模拟通用的物理机。JVM是一个标准,一套规范,JVM主要定义了二进制class文件和JVM指令集和数据的内部表示和存储等
2、定义
—–程序计数器 (PC):可以看做是当前线程执行字节码的行号指示器。字节码解释器工作的时候就是通过这个计数器的值来选取下一条需要执行的字节码指令, 分支, 循环、跳转、异常处理、线程恢复等基础功能依赖计数器完成。
—–虚拟机栈:和计数器一样, 也是线程私有的,生命周期同线程一致。每个方法在执行时,都会创建一个栈帧,用于存储局部变量表、操作数栈、动态链接、方法出口等信息。方法调入则入栈, 方法执行完则出站。局部变量表存储各种基本类型数据(java的8种,其中long,double占用2个局部变量控件,其余数据占用1个)、对象引用(reference类型)。局部变量表所需的内存空间在编译期间完成分配,当进入一个方法时, 这个方法需要在帧中分配多大的局部变量空间是完全确定的。在方法运行期间是不会改变局部变量表的大小的。
—–本地方法栈:此栈和JVM栈作用非常类似, 不同在于本地方法栈为虚拟机使用到的Native方法服务, 而JVM栈则是为Java执行的方法服务。Sun HotSpot虚拟机, 直接把本地方法栈和虚拟机栈合二为一。本地方法栈也会抛出StackOverFlowError和OutOfMemoryError异常。
—–Java堆:是JVM管理内存中最大的一块。被所有线程共享一块区域。堆是GC垃圾收集器管理的主要区域。从内存回收角度看, java堆被分为新生代、老年代, 再细致一点有其他的划分。这些目的主要就是更快的分配和回收内存。
3、支持
—–对java Library提供一下支持:
–反射 java.lang.redflect
–classLoader 类装载器
–初始化class和interface
–安全相关 java.security
–多线程
–弱引用
关于JVM的认识,目前先总结这些,后边会有更加详细的解释。
相关文章推荐
- 【Java】深入理解JVM学习笔记(一) —— JVM数据区域
- 4.1 jvm 深入学习之 java 引用
- 深入学习Java JVM - 垃圾收集器与内存分配策略
- 深入JVM内核—原理与优化之gc参数学习
- JVM基础:深入学习JVM堆与JVM栈
- 《深入理解 Java 虚拟机》学习笔记(1)—— JVM 运行时数据区
- 深入学习Java JVM - 运行时数据区域
- 深入学习JVM笔记一JVM启动流程与基本结构
- JVM深入学习笔记二:Java JIT编译
- 【深入理解JVM】学习笔记——-1、JVM基本结构
- 深入理解JVM虚拟机学习笔记(二)垃圾收集器与垃圾收集算法
- 深入JVM学习笔记-安全性
- 深入学习JVM笔记二堆的分配参数
- JVM 深入学习:Java 解析 Class 文件过程解析
- 《深入理解 Java 虚拟机》学习笔记(1)—— JVM 运行时数据区
- 深入学习JVM-JVM 安全点和安全区域
- 深入理解JVM学习笔记——第十三章 线程安全与锁优化
- 【Java】深入理解JVM学习笔记(三) —— GC收集器和内存分配
- 深入学习JVM笔记三 GC算法与种类