JVM
毒毒毒毒丶
这个作者很懒,什么都没留下…
展开
-
Java虚拟机JVM之类加载机制与类加载器
一、类的生命周期 类的生命周期 加载 --> 验证 --> 准备 --> 解析 --> 初始化 --> 使用 --> 卸载 |<------- 连接 ------->| |<------------- 类加载 ---------------->| 类的生命周期一共有 7 个阶段,其中前五个阶段较为重要,统称为类加...原创 2019-06-28 08:59:03 · 341 阅读 · 0 评论 -
Java虚拟机JVM之内存分配与回收策略
内存分配与回收策略 对象的内存分配,就是在堆上分配(也可能经过 JIT 编译后被拆散为标量类型并间接在栈上分配),对象主要分配在新生代的 Eden 区上,如果开启了本地线程分配缓冲,将按线程优先在TLAB上分配,少数情况下可能直接分配在老年代,分配规则不固定,取决于当前使用的垃圾收集器组合以及相关的参数配置。 1、对象优先在 Eden 分配 大多数情况下,对象在新生代 Eden 区中分配。当...原创 2019-06-27 08:56:52 · 285 阅读 · 0 评论 -
Java虚拟机JVM之HotSpot算法实现与垃圾收集器
在上一章节讲解了判断对象是否存活于垃圾回收算法我们已经对虚拟机是进行 GC 的流程有了一个大致的了解。但是,在 HotSpot 虚拟机中,高效的实现这些算法也是一个需要考虑的问题。所以,接下来,我们将研究一下 HotSpot 虚拟机到底是如何高效的实现这些算法的,以及在实现中有哪些需要注意的问题。 一、HotSpot算法实现 1、枚举根节点 2、安全点 3、安全区域 二、垃圾收集器 1...原创 2019-06-27 08:56:40 · 578 阅读 · 0 评论 -
Java虚拟机JVM之垃圾回收策略与算法
本章节主要介绍垃圾回收策略与算法 一、概述 二、判定对象是否存活 1、引用计数法 2、可达性分析法(主流) 三、引用类型 1、强引用(Strong Reference) 2、软引用(Soft Reference) 3、弱引用(Weak Reference) 4、虚引用(Phantom Reference) 四、宣告对象死亡的两次标记过程 1、第一次标记并进行一次筛选。 2、...原创 2019-06-26 08:59:39 · 219 阅读 · 0 评论 -
Java虚拟机JVM之Java对象的创建、内存布局和访问
这一小节将对 JVM 对 Java 堆中的对象的创建、布局和访问的全过程进行讲解。 一、对象的创建 1、类加载检查 虚拟机在解析.class文件时,若遇到一条 new 指令,首先它会去检查常量池中是否有这个类的符号引用,并且检查这个符号引用所代表的类是否已被加载、解析和初始化过。如果没有,那么必须先执行相应的类加载过程。 2、为新生对象分配内存 对象所需内存的大小在类加载完成后便可完全确...原创 2019-06-25 08:40:21 · 430 阅读 · 0 评论 -
Java虚拟机JVM之Java内存结构与内存溢出异常
一、java内存架构 JAVA内存结构图 1、程序计数器 定义:程序计数器也称PC寄存器,是一块较小的内存空间,可以看做当前线程所执行的字节码指令的行号指示器 作用:字节码解释器通过改变程序计数器的值来进行分支、循环、跳转、异常处理、线程恢复等功能;在多线程情况下,程序计数器记录的是当前线程执行的位置,从而当线程切换回来时,就知道上次线程执行到哪了 特点: 如果当前线程所执行的...原创 2019-06-25 08:39:41 · 245 阅读 · 0 评论 -
Java虚拟机JVM之类文件结构
一、JVM的“无关性” JVM的无关性主要包括以下两点: 平台无关性,任何平台都能运行java代码 语言无关性:JVM能运行除JAVA以外的其他代码 Java 源代码首先需要使用 Javac 编译器编译成 .class 文件,然后由 JVM 执行 .class 文件,从而程序开始运行。JVM 只认识 .class 文件,它不关心是何种语言生成了 .class 文件,只要 .class 文件符...原创 2019-06-28 09:31:51 · 284 阅读 · 0 评论