
JVM
求知者_______
Java开发
778670825@qq.com
展开
-
JVM第四篇:垃圾回收算法
什么是垃圾?垃圾是指在运行程序中没有任何指针指向的对象,这个对象就是需要被回收的垃圾。JVM实现自动管理内存,无需开发人员手动参与内存的分配与回收,这样就降低内存泄露和内存溢出风险,可以让程序员专注于业务开发。频繁收集Young区较少收集Old区基本不动Perm区对象存活判断在堆里存放着几乎所有的Java对象实例,在GC执行垃圾回收之前,首先需要区分出内存中哪些是存活对象,哪些是已经死亡的对象。只有被标记为已经死亡的对象,GC时,才会释放掉其所占用的空间,因此这个过程称之为垃圾标记阶原创 2020-10-07 13:53:50 · 210 阅读 · 0 评论 -
JVM第三篇:执行引擎
执行引擎是Java虚拟机核心组成部分之一。“虚拟机”是一个相对“物理机”的概念,这两种机器都有代码执行的能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式。JVM主要任务是负责装载字节码到其内部,但字节码并不能直接运行在操作系统上,因为字节码指令并非等价于本地机器指令,它内部包含的仅仅只是一些能够被JVM所识别的字节码指令、符号表以..原创 2020-09-18 21:31:42 · 222 阅读 · 0 评论 -
JVM第二篇:运行时数据区
运行时数据区由五部分组成,分别为:方法区、虚拟机栈、本地方法栈、堆、程序计数器。具体如下:(1)PC计数器线程私有的,每个线程都会一个独自的程序计数器,生命周期与线程一致。程序计数器会存储当前线程正在执行的Java方法的JVM指令地址,如果是native方法,则是undefined。程序计数器是控制流的指示器、分支、循环、跳转、异常处理、线程恢复等基础都需要依赖程序计数器。字节码解释器就是通过改变计数器值来选取下一条需要执行的字节码指令。无OOM、无GC区域。为什么要有PC计数器呢?.原创 2020-09-18 13:23:39 · 270 阅读 · 1 评论 -
JVM第一篇:类加载子系统
类加载子系统,只负责加载Class文件,不负责是否可以运行,是否运行是由执行引擎决定的。从上图可以看出来,类加载器可以将Class文件转换成Class对象类加载子系统的三个阶段(1)加载阶段通过一个类的全限定名获取定义此类的二进制字符流。将这个字符流代表的静态数据结构转化为方法区运行时数据结构。在内存中生成一个代表这个类的Class对象,作为方法区这个类的各种数据的访问入口。(2)链接阶段验证:确保Class文件是合法的(是否为Java规定的Class文件),不会危害虚拟机。四.原创 2020-09-09 13:06:41 · 197 阅读 · 0 评论