源码阅读
腾云丶
这个作者很懒,什么都没留下…
展开
-
Java8源码阅读(1) ---ArrayList
一切尽在代码里,有错误欢迎指出 package org.utils.MyCollection; import sun.misc.SharedSecrets; import java.util.*; import java.util.function.Consumer; import java.util.function.Predicate; import java.util.function...原创 2018-07-26 20:59:24 · 1186 阅读 · 0 评论 -
深入理解Java虚拟机读书笔记(9): 深入理解虚拟机的类加载机制<1>
深入理解Java虚拟机读书笔记(9): 深入理解虚拟机的类加载机制<1> 所谓类加载机制,就是虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。在Java中,类型的加载、连接和初始化过程都是在程序运行期间完成。基于此特性,使得Java语言更加灵活,比如可以编写面向接口的程序在运行时再指定实现类;或者自己实现类...原创 2019-01-14 19:28:05 · 212 阅读 · 0 评论 -
深入理解Java虚拟机读书笔记(7): 深入理解垃圾收集器
深入理解Java虚拟机读书笔记(6): 深入理解垃圾收集器 前面讨论的都是理论方面的只是,垃圾收集器则是内存回收的具体实现。在介绍这些不同的垃圾收集器之前,先介绍一些其他比较重要的概念。 一、重要概念 GC停顿 GC停顿时,整个执行系统看起来就像被冻结在某个时间点上,不可以出现分析过程中对象引用关系还在不断变化的情况,该点不满足的话分析结果准确性就无法得到保证。Sun公司称之为“Stop The ...原创 2019-01-08 21:20:14 · 188 阅读 · 0 评论 -
深入理解Java虚拟机读书笔记(6): 深入理解垃圾回收算法
深入理解Java虚拟机读书笔记(6): 深入理解垃圾回收算法 下面就几种最常见的垃圾回收算法进行简单介绍。 一、标记-清除算法 “标记-清除”(Mark-Sweep)算法是最基础的收集算法,算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有 被标记的对象。 不足: 一个是效率问题,标记和清除两个过程的效率都不高 另一个是空间问题,标记清除之后会产生大...原创 2019-01-08 15:46:10 · 183 阅读 · 0 评论 -
深入理解Java虚拟机读书笔记(5): 判定对象的死亡
深入理解Java虚拟机读书笔记(5): 判定对象的死亡 通过前面的学习已经可以知道,Java内存运行时区域中的程序计数器、虚拟机栈、本地方法栈三个区域随线程而生,随线程而灭;栈中的栈帧随着方法进入和退出有规律的进行出栈和入栈操作。同时,每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的。因此这几个区域的内存分配和回收都具备确定性,在这几个区域内就不需要过多考虑回收的问题,因为方法结束或者线...原创 2019-01-08 10:27:05 · 187 阅读 · 0 评论 -
深入理解Java虚拟机读书笔记(8): 深入理解类文件结构
深入理解Java虚拟机读书笔记(8): 深入理解类文件结构 随着语言的发展,Java虚拟机已经不再仅仅是针对“Java”这一门语言而言了,语言无关性被越来越重视。虚拟机平台使用统一的程序存储格式字节码(ByteCode),实现平台无关性。然而,一大批在Java虚拟机上运行的语言如Clojure、Scala等发展越来越快。但是,实现语言无关性的基础仍然是虚拟机和字节码存储格式。 Java虚拟机不和包...原创 2019-01-12 20:06:45 · 226 阅读 · 0 评论 -
深入理解Java虚拟机读书笔记(3): JDK自带工具详解汇总(不断更新)
深入理解Java虚拟机读书笔记(3): JDK自带工具详解汇总(不断更新) 对于初学者来说,学习Java时可能仅仅认识了java和javac两个命令,其他的命令没有基础过。其实jdk自带了非常多的非常好用的工具,在windows环境下,打开jdk下的bin目录,可以看到很多exe文件,如下图所示: 同样的,在linux环境下jdk的bin目录下也一样提供了很多工具,这些是编译好的二进制可执行脚本...原创 2019-01-07 16:54:27 · 425 阅读 · 0 评论 -
深入理解Java虚拟机读书笔记(4): JVM参数类型分类
深入理解Java虚拟机读书笔记(3): JVM参数类型分类 JVM有很多参数,一般可以分为三大类:标准参数、X参数和XX参数 标准参数 所谓标准参数,即一般化参数,往往是固定不变的,比如以下参数: -help -version 显式虚拟机类型 当前版本号等等 这里注意JVM默认开启了mixmode混合模式,这意味着JVM在运行时可以动态的把字节码编译成本地代码 -server、-cli...原创 2019-01-07 13:40:30 · 254 阅读 · 0 评论 -
深入理解Java虚拟机读书笔记(2): 深入理解HotSpot虚拟机对象
深入理解Java虚拟机读书笔记(2): 深入理解HosSpot虚拟机对象 为了理解虚拟机中数据的细节,比如如何创建、如何布局以及如何访问,必须具体到某一虚拟机和某一个内存区域。此处深入探讨HotSpot虚拟机在Java堆中对象分配、布局和访问的全过程。 一、对象的创建 反映到Java语言中,对象的创建通常不过是一个new关键字,然而反映到底层虚拟机上是如何呢?可以概括为以下三步: 类加载: 虚...原创 2019-01-07 10:04:25 · 288 阅读 · 0 评论 -
深入理解Java虚拟机读书笔记(1):内存管理重要概念
深入理解Java虚拟机读书笔记(1):内存管理重要概念 说到Java内存管理,不得不先贴一张非常经典的图,如下所示: 这些模块有些是线程私有的,有的则是线程共享的。下面一一对这些模块进行介绍: 一、程序计数器 程序计数器一块比较小的内存空间,可以看做当前线程所执行的字节码的行号指示器,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、 循环、 跳转、 异常处理、...原创 2019-01-06 22:05:30 · 193 阅读 · 0 评论 -
深入理解Java虚拟机读书笔记(9): 深入理解虚拟机的类加载机制<2>
深入理解Java虚拟机读书笔记(9): 深入理解虚拟机的类加载机制<2> 前面说到通过一个类的全限定名来获取描述此类的二进制字节流从而加载类,这个动作是在虚拟机外部实现的,以便实现自定义,实现这个动作的代码模块称为“类加载器”。 一、类与类加载器 对于任意一个类, 都需要由加载它的类加载器和这个类本身一同确立其在Java虚拟机中的唯一性, 每一个类加载器, 都拥有一个独立的类名称空间。...原创 2019-01-14 21:36:06 · 387 阅读 · 1 评论