JVM升华篇】的更多相关文章

01 Garbage Collect(垃圾回收) 1.1 如何确定一个对象是垃圾? 要想进行垃圾回收,得先知道什么样的对象是垃圾. 1.1.1 引用计数法 对于某个对象而言,只要应用程序中持有该对象的引用,就说明该对象不是垃圾,如果一个对象没有任何指针对其引用,它就是垃圾. 弊端 :如果AB相互持有引用,导致永远不能被回收. 1.1.2 可达性分析  通过GC Root的对象,开始向下寻找,看某个对象是否可达  能作为GC Root:类加载器.Thread.虚拟机栈的本地变量表.static成员…
在一篇<初步了解JVM第一篇>中,我们已经了解了: 类加载器:负责加载*.class文件,将字节码内容加载到内存中.其中类加载器的类型有如下: 启动类加载器(Bootstrap) 扩展类加载器(Extension) 应用程序类加载器(AppClassLoader) 用户自定义加载器(User-Defined) 执行引擎:负责解释命令,提交给操作系统执行. 本地接口:目的是为了融合不同的编程语言提供给Java所用,但是企业中已经很少会用到了. 本地方法栈:将本地接口的方法在本地方法栈中登记,在执…
JVM学习篇-第一篇 JDK( Java Development Kit): ​ Java程序设计语言.Java虚拟机.Java类库三部分统称为JDK,JDK是用于支持Java程序开发的最小环境** JRE(Java Runtime Environment): ​ Java类库API中的JavaSE的API子集和Java虚拟机两部分统称为JRE,JRE是支持Java程序运行的标准环境 JVM(Java Virtual Machine): ​ Java虚拟机就是二进制字节码的运行环境,负责装载字节…
http://www.kuqin.com/java/20111031/314144.html 在<Java虚拟机规范>之中,详细描述了虚拟机指令集中每条指令的执行过程.执行前后对操作数栈.对局部变量表的影响等细节.这些细节描述与Sun的早期虚拟机(Sun Classic VM)高度吻合,但随着技术的发展,高性能虚拟机真正的细节实现方式已经渐渐与虚拟机规范所描述产生越来越大的差距,虚拟机规范中的描述逐渐成了虚拟机实现的“概念模型”——即实现只能保证规范描述等效. 基于上面的原因,我们分析程序的执…
话不多说直接上干货,先来看oracle官网中是怎么描述JDK的:https://docs.oracle.com/javase/8/docs/index.html 这是官网中JDK.JRE.JVM的一个关系图 看了这张图我们要学什么呢? 以前我们在用java开发代码的时候只知道把JDK下载下来然后进行写代码,其实这样我们只用到了JDK的一个Tools,也就是上图中的Tools,我们只站在了JDK的一个应用层,那么现在这篇博客的目的就是要我们站在Java Virtual Machine(JVM)层面…
大家都知道,Java中JVM的重要性,学习了JVM你对Java的运行机制.编译过程和如何对Java程序进行调优相信都会有一个很好的认知. 废话不多说,直接带大家来初步认识一下JVM. 什么是JVM? JVM(Java Virtual Machine)是一个抽象的计算机,和实际的计算机一样,它具有指令集并使用不同的存储区域,它负责执行指令,还要管理数据.内存和寄存器. 看到这里,可能不懂JVM的人,已经蒙圈了.没关系,下面让我详细为大家介绍JVM的体系架构图,或许你会明白些. 简单来说,JVM就是…
JVM(Java Virtual Machine) 前奏篇(看官网规范怎么说) 1.The relation of JDK/JRE/JVM 在下图中,我们所接触的,最熟悉,也是经常打交道的 最顶层 Java Language (.java 文件所写的内容),也就是java 语法层面.官方 划定出了 JDK(Java SE Development Kit (JDK) 8),JRE(Java SE Runtime Environment (JRE) 8) 所包含的Java components.官网…
本文内容过于硬核,建议有 Java 相关经验人士阅读. 0. 引言 一说到 JVM ,大多数人第一个想到的可能就是 GC ,今天我们就来聊一聊和 GC 关系最大的垃圾收集器以及垃圾收集算法,希望能通过本篇文章,让各位同学对 GC 有一个初步大体的认知. 1. 运行时数据区 JVM 在执行的时候会把它所管理的内存划分为几个不同的数据区域.这些区域有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而一直存在,有些区域则是依赖用户线程的启动和结束而建立和销毁.根据<Java虚拟机规范>…
写在前面的话:本文是在观看尚硅谷JVM教程后,整理的学习笔记.其观看地址如下:尚硅谷2020最新版宋红康JVM教程 一.什么是类加载器 在类加载过程中,加载阶段有一个动作是"通过一个类的全限定名称获取定义此类的二进制字节流",虚拟机将这个动作交给应用程序,让其自行去决定怎么获取所需的类.而实现这个动作的代码就被称为类加载器.关于类加载过程,可以看我的上一篇博客<类加载过程>. 1.类与加载器 类加载器除了用于实现类的加载外,还用于确定一个类在虚拟机中的唯一性,也就是说类加载…
一.基本垃圾回收算法 1. 判断对象是否需要回收的方法(如何判断垃圾): 1) 引用计数(Reference Counting)  对象增加一个引用,即增加一个计数,删除一个引用则减少一个计数.垃圾回收时,只用收集计数为0的对象.此算法最致命的是无法处理循环引用的问题. 2) 可达性分析算法(Reachability Analysis) 通过一系列被称为"GC Roots"的对象作为起点,从这些节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到达GC Roots没有任何引用链相…