再谈类的加载器

概述 类加载器是JVM执行类加载机制的前提。 ClassLoader的作用: ClassLoader是Java的核心组件,所有的Class都是由ClassLoader进行加载的,ClassLoader负责通过各种方式将Class信息的二进制数据流读入JVM内部,转换为一个与目标类对应的java.lang. ...

阅读更多

类的加载过程详解

概述 在Java中数据类型分为基本数据类型和引用数据类型。⚠️基本数据类型由虚拟机预先定义,引用数据类型则需要进行类的加载。 按照Java虚拟机规范,从class 文件到加载到内存中的类,到类卸载出内存为止,它的整个生命周期包括如下7个阶段: 其中,验证、准备、解析3个部分统称为链接(Linking) ...

阅读更多

字节码指令集与解析举例

JVM字节码指令手册 概述 Java字节码对于虚拟机,就好像汇编语言对于计算机,属于基本执行指令。 Java 虚拟机的指令由一个字节长度的、代表着某种特定操作含义的数字(称为操作码,Opcode) 以及跟随其后的零至多个代表此操作所需参数(称为操作数,Operands) 而构成。由于Java 虚拟机采用面向...

阅读更多

JVM字节码指令手册

JVM指令手册 一、栈和局部变量操作 将常量压入栈的指令 aconst_null 将null对象引用压入栈 iconst_m1 将int类型常量-1压入栈 iconst_0 将int类型常量0压入栈 iconst_1 将int类型常量1压入栈 iconst_2 将int类型常量2压入栈 icons...

阅读更多

Class文件结构

概述 字节码文件的跨平台性 1.Java语言:跨平台的语言(write once ,run anywhere) 当Java源代码成功编译成字节码后,如果想在不同的平台上面运行,则无须再次编译 这个优势不再那么吸引人了。Python、 PHP、 Perl、 Ruby、 Lisp等有强大的解释器。 ...

阅读更多

缓存一致性问题

先做一个说明,从理论上来说,给缓存设置过期时间,是保最终一致性的解决方案。这种方案下,我们可以对存入缓存的数据设置过期时间,所有的写操作以数据库为准,对缓存操作只是尽最大努力即可。也就是说如果数据库写成功,缓存更新失败,那么只要到达过期时间,则后面的读请求自然会从数据库中读取新值然后回填缓存。因此,接下来讨论的思...

阅读更多

Hashmap常见面试题

HashMap常见面试题 HashMap源码解析 你了解数据结构中的HashMap么?能跟我聊聊他的结构和底层原理么? HashMap是我们非常常用的数据结构,由数组和链表组合构成的数据结构。 大概如下,数组里面每个地方都存了Key-Value这样的实例,在Java7叫Entry,在Jav...

阅读更多

Hashmap源码解析

HashMap集合简介 概述 HashMap基于哈希表的Map接口实现,是以key-value存储形式存在,即主要用来存放键值对。HashMap 的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为null。此外,HashMap中的映射不是有序的。 JDK1.8 之前 HashMap ...

阅读更多