![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
刨根问底系列
对知识进行模块化的总结,集合,以我能够做到的程度尽可能深挖单个模块的方式书写、整理
月明星稀_灬
这个作者很懒,什么都没留下…
展开
-
【刨根问底】之JVMpart5(自定义类加载器实例、验证、准备、解析、初始化、类加载操作、动态类加载)
1.4.2.1.6自定义类加载器实例//从ClassLoader继承新建类MyClassLoaderpublic class MyClassLoader extends ClassLoader { //该字段用来配置类加载器的目标根目录 private String root; public String getRoot() { return root;...原创 2020-02-27 20:25:14 · 225 阅读 · 0 评论 -
【刨根问底】之JVMpart4(类加载机制深入详解、动态绑定与静态绑定、class对象、klass-oop模型、类加载器、Launcher类、双亲委派机制与命名空间、ClassLoader类)
1.类加载机制详解1.1类加载的定义当程序运行至主动需求使用某个类的数据,而JVM中并不存在该类时,JVM将会通过加载、连接、初始化三个步骤来对该类进行加载,这一系列的三步操作被合称为类的加载或者类的初始化1.2类加载的时机在java的实现方案中,类型的加载是时机是运行期间加载的显然,动态加载将会带来更大的灵活性,但是对于性能来说似乎并不是优秀的方案,jvm将要设法避免发生程序运行至某处...原创 2020-02-27 12:56:37 · 849 阅读 · 0 评论 -
【刨根问底】特殊的类型:String part2(String源码探究)
1.聊一聊String源码如果想要去讨论Stirng特性,那么String源码自然是最值得讨论的东西,应该说,对于最常用的工具,去阅读一下其底层实现自然是十分值得的,自然在一篇文章中讨论4000多行代码显得不现实,且多数方法并不值得去深究讲述,再此,单独领出一些值得讨论的部分1.1String 成员变量1.1.1数据存储之value数组 /** The value is used for ...原创 2020-02-18 19:24:31 · 250 阅读 · 0 评论 -
【刨根问底】特殊的类型:String part1(String相关的存储空间底层、运行时常量池、intern方法)
1. String的本质作为Java最常用的类型,String的特性总是一个热门话题,其本质是一个jdk提供的核心类,因此,和数组和基础类型这些怪物不同,我们可以阅读其底层实现的代码public final class String(){ private final char[] value;}//重写自Object方法的比较方法 public boolean equals(Obje...原创 2020-02-20 15:10:16 · 375 阅读 · 0 评论 -
【刨根问底】之特殊的对象——数组(java中数组的本质)
1. java数组的本质//动态初始化Integer[] array = new Integer[5];int i = 5;Integer[] array = new Integer[i];//静态初始化Integer[] array = {1,2,3};众所周知,java的数组是对象,虽然十分基础,但是不少朋友工作一段时间甚至会忘记这东西如何实例化,这其实非常简单因为这玩意诡异的...原创 2020-02-15 21:53:19 · 300 阅读 · 0 评论 -
【刨根问底】之JVMpart3(垃圾算法,FullGC本质,对象存活判定,GCroot,常用垃圾收集器概述,CMS垃圾收集器详解)
1.垃圾收集器常用算法1.1复制算法该算法底层逻辑实际为将存储空间一分为二,只使用其中的一般存储,若存储满,则将还存活的复制到另一半,将原本部分直接全部清除——该算法速度快而且不会留下内存碎片,而代价是存储空间只使用了一半,名副其实的空间换时间,而实际上在对象的一生中所演示的逻辑就是复制算法的优化——当大部分对象都是朝生暮死的情况下,存储空间并不需要对半分,从而实际支付的空间代价变得很小1...原创 2020-02-02 19:41:34 · 1023 阅读 · 1 评论 -
【刨根问底】之JVMpart2(java堆结构、分代算法机制及过程,对象的一生,元空间与方法区,GC触发条件)
栈内存详解1.先进后出,插入和释放的本质是指针的上下移动,因此速度非常快2.调度指针的函数需要知道每个存入的数据的具体存在时间,在java中因为这个特点,栈一般不用来存放对象3.因为其速度快且先进后出的运行模式,通常作为方法执行的内存模型4.方法调用时,开辟一个独立的栈帧如main方法,main方法中调用了其他方法时,开辟下一个新栈帧,由于先进后出,所以main会最后被释放5.在java...原创 2020-01-31 10:09:33 · 631 阅读 · 0 评论 -
【刨根问底】之JVMpart1(抽象数据类型,jvm内存空间结构,栈,寄存器,直接内存,线程概念,多线程概念,native方法)
1.面向对象的编程补完上述概念后,当我们要实行"面向对象的编程"行为的话,我们需要做一些什么呢:1,抽象数据类型2,继承3,多态4,封装pass:抽象数据类型指的是,将具体问题中的元素,按照1.数据2.关联&行为(也就是特征)三个要素进行抽象化的行为然而上,除了这些基础技能点,我们还有一些额外的需要考虑的问题,其中最为重要的就是——对象的创建和存在时间2.对象的创建和...原创 2020-01-29 09:50:27 · 246 阅读 · 0 评论