深入学习JVM之一

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学习)