自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

后端学习

只为成功找方法,不为失败找借口!

  • 博客(12)
  • 资源 (1)
  • 收藏
  • 关注

原创 JVM(ClassLoader) - 类加载器的分类(引导类加载器,扩展类加载器,系统类加载器)

类加载器的分类JVM支持两种类型的类加载器 。分别为引导类加载器(Bootstrap ClassLoader)和自定义类加载器(User-Defined ClassLoader)。从概念上来讲,自定义类加载器一般指的是程序中由开发人员自定义的一类类加载器,但是Java虚拟机规范却没有这么定义,而是将所有派生于抽象类ClassLoader的类加载器都划分为自定义类加载器。无论类加载器的类型如何划分,在程序中我们最常见的类加载器始终只有3个,如下所示这里的四者之间是包含关系,不是上层和下层,也不是子系

2021-01-27 08:59:53 656 2

原创 AVI 自平衡二叉树

平衡二叉树本质是二叉查找树的一种每个节点的左右子树的高度差的绝对值(平衡因子)最多为1 ,| leftTreeHeightmax - rightTreeHeightmax| <= 1avi树图 (当左子树或是右子树,为空,默认值是-1)旋转当avi的平衡因子大于1的时候,就会打破avi的平衡,这时我们需要左旋转或右旋转,来重新让它平衡。对于AVI的旋转分为四种情况,分别是左左型,右右型,左右型,右左型左左型 — 像图中一样,所有节点都偏向左边的情况,这

2021-01-14 10:22:57 443

原创 JVM - 程序计数器

程序计数器介绍JVM中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。这里,并非是广义上所指的物理寄存器,或许将其翻译为PC计数器(或指令计数器)会更加贴切(也称为程序钩子),并且也不容易引起一些不必要的误会。JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟。它是一块很小的内存空间,几乎可以忽略不记。也是运行速度最快的存储区域。在JVM规范中,每个线程都有它自

2021-01-29 12:01:45 91

原创 JVM - 运行时数据区概述及线程

运行时数据区概述及线程前言本节主要讲的是运行时数据区,也就是下图这部分,它是在类加载完成后的阶段当我们通过前面的:类的加载-> 验证 -> 准备 -> 解析 -> 初始化 这几个阶段完成后,就会用到执行引擎对我们的类进行使用,同时执行引擎将会使用到我们运行时数据区也就是大厨做饭,我们把大厨后面的东西**(切好的菜,刀,调料),比作是运行时数据区。而厨师可以类比于执行引擎**,将通过准备的东西进行制作成精美的菜品内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,

2021-01-28 09:24:08 135

原创 JVM - ClassLoader的双亲委派机制(沙箱安全机制)

双亲委派机制Java虚拟机对class文件采用的是按需加载的方式,也就是说当需要使用该类时才会将它的class文件加载到内存生成class对象。而且加载某个类的class文件时,Java虚拟机采用的是双亲委派模式,即把请求交由父类处理,它是一种任务委派模式。工作原理如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给父类的加载器去执行;如果父类加载器还存在其父类加载器,则进一步向上委托,依次递归,请求最终将到达顶层的启动类加载器;如果父类加载器可以完成类加载任务,就成功返

2021-01-27 10:55:32 254

原创 JVM类加载子系统 (ClassLoader) - 加载,链接,初始化

类加载子系统完整图类加载器子系统作用类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。(例如:CA FE BA BY)ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine(执行引擎)决定。加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息是Class文件中常量池部分的内存映射)class fi

2021-01-25 17:21:53 330

原创 JVM的发展历程

JVM的发展历程Sun Classic VM早在1996年Java1.0版本的时候,Sun公司发布了一款名为sun classic VM的Java虚拟机,它同时也是世界上第一款商用Java虚拟机,JDK1.4时完全被淘汰。这款虚拟机内部只提供解释器。现在还有及时编译器,因此效率比较低,而及时编译器会把热点代码缓存起来,那么以后使用热点代码的时候,效率就比较高。如果使用JIT编译器,就需要进行外挂。但是一旦使用了JIT编译器,JIT就会接管虚拟机的执行系统。解释器就不再工作。解释器和编译器不能配合

2021-01-25 11:31:30 118

原创 JVM的架构模型

JVM的架构模型Java编译器输入的指令流基本上是一种基于栈的指令集架构,另外一种指令集架构则是基于寄存器的指令集架构。具体来说:这两种架构之间的区别基于栈式架构的特点设计和实现更简单,适用于资源受限的系统;避开了寄存器的分配难题:使用零地址指令方式分配。指令流中的指令大部分是零地址指令,其执行过程依赖于操作栈。指令集更小,编译器容易实现。不需要硬件支持,可移植性更好,更好实现跨平台基于寄存器架构的特点典型的应用是x86的二进制指令集:比如传统的PC以及Android的Davlik虚拟

2021-01-19 08:41:04 147

原创 jvm的体系结构,执行流程

虚拟机与java虚拟机虚拟机Java虚拟机jvm的位置java的体系结构java的整体结构java代码执行流程虚拟机所谓的虚拟机(virtual Machine),就是一台虚拟的计算机。本质上一款软件,用来执行虚拟的计算机指令。大体上,虚拟机分为系统虚拟机和程序虚拟机。比如virtual Box,Mware就是属于系统虚拟机,他们是对物理计算机的仿真,提供一个可以运行的完整的操作系统的软件平台。程序虚拟机的典型代表就是java的虚拟机,它专门为执行单个计算机程序而设计,在Java虚

2021-01-17 08:52:34 98

原创 JVM 本地方法栈,堆

本地方法栈主要存储了很多,c/c++代码,而非java代码因为,jvm需要通过c/c++代码实现和操作系统之间的交互。堆(heap)Heap 堆通过new关键字,创建对象都会使用到堆内存。特点它是线程共享的,堆中对象都需要考虑线程安全的问题有垃圾回收机制堆内存诊断jps工具1. 查看当前系统中有哪些java进程jmap工具1. 查看堆内存占用情况 jmap -head 进程id(非连续性)jconsole工具1. 图形界面的,多功能的检测工具,可以连续检测

2021-01-04 21:37:38 109

原创 JVM 内存结构-程序计数器,虚拟机栈

程序计数器1.1定义作用,是用于记住下一条jvm指令的执行地址特点线程私有的,就是每个线程都有自己的程序计数器规定不会产生内存溢出本质,程序计数器的本质就是一个寄存器,在jvm的二进制码转换成机器码的过程中,发挥作用。虚拟机栈定义Java Virtual Machine Stacks (Java 虚拟机栈)每个线程都只能有一个虚拟机栈(线程私有),对应着当前执行的那个方法作用线程每当执行一个方法,就压入虚拟机栈中;每当执行完一个方法,就从中弹出。

2021-01-04 21:24:46 102 1

原创 另一个树的子树

另一个树的子树给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。示例 1:给定的树 s: 3 / \ 4 5 / \1 2给定的树 t: 4 / \1 2返回 true,因为 t 与 s 的一个子树拥有相同的结构和节点值。示例 2:给定的树 s: 3 / \ 4 5.

2021-01-01 16:48:30 75

VSCodeUserSetup-x64-1.62.3.exe

VSCodeUserSetup-x64-1.62.3.exe

2021-12-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除