GC标记算法 内存从小到大的过程产生了各种各样的GC Serial + Serial Old 单线程 GC线程执行的时候用户线程要停掉 Parallel Scavenge + Parallel Old 多线程 并行执行 PerNew + SMS 并发执行—(标记时间久的阶段)和并发回收是多线程, 初始标记和重新标记是并行 前面几个GC内存都是两块连续的(年轻+老年),分大块, 2021-08-11 Java基础 #GC #标记算法
常见GC 常用的垃圾回收器 前面几个不光逻辑上区分年轻代和老年的,物理上也区分年轻的和老年的 G1 只是在逻辑上 区分年轻的和老年的 jdk8 已经比较成熟了, jdk 11后默认是G1 逻辑上管理的一块一块的区域可以是 eden、可以是 survivor、也可以是old 但在物理上这些一块一块的区域可以角色转换,如:回收前世eden区,回收后下一次可能会变成old区 ZGC 只有一 2021-08-05 Java基础 #GC
GC基础GarbageCollector GC 基础(Garbage Collector)什么是垃圾? 没有引用指向的对象就叫垃圾 java vs c++ java GC 自动处理,开发效率高,执行效率低 c++ 手工处理垃圾,容易忘记回收— 导致内存泄漏,对此回收—非法访问 开发效率低,执行效率高 找到垃圾有两种算法 Reference count 引用计数 —— python 采用的是这种 概念:有一个引用 2021-07-20 Java基础 #GC
Class文件的加载过程和类加载器的原理 Class 文件是怎样被放在内存的 硬盘中的Class被加载的过程 loading 把一个class 加载到内存,懒加载,需要的时候再加载 linking verification 校验class,是否满足class的格式 preparation 把class中静态变量设置成默认值 int类型 0 resolution 解析 loadeClass方法中的第二个参数 true 为解 2021-07-02 Java基础 #class #类加载器 #双亲委派
认识Class文件 概念Class文件是一组以8字节为基础单位的二进制流,各个数据项目严格的按照顺序紧凑地排列在文件之中,中间没有添加任何分割符,这使得整个Class文件存储的内容几乎全部是程序运行的必要数据,没有空隙存在。 《Java虚拟机规范》规定了Class文件格式采用一种类似C语言结构体的伪结构来存储数据,这种伪结构只包含两种数据类型,即无符号数和表。 class文件通过固定的数据结构排列顺序并且每种数据结构 2021-06-29 Java基础 #class
MySQL事务隔离级别的实现原理——LBCC + MVCC (InnoDB) 事务具有四大特性 ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability) 关于原子性、一致性、和持久性是如何保证的,在前面文章中已经介绍:传送门 本文只介绍事务隔离级别相关的特性 违反事务隔离级别的几个特征首先需要了解一下违反事物隔离级别的几个特征: 脏读 当前事务中读取到了其它没有提交的事务修改的数据———读到了未 2021-04-02 Mysql #LBCC #MVCC
Mysql 三大Log——Redo Log、Undo Log、Bin Log,以及Mysql的两阶段提交 吧拉吧拉吧拉吧拉吧拉 三大日志关于这三个log,redo log 和 undo log 是归属于Innodb 存储引擎的 ,bin log 是归属于 mysql Server 这个层面的。 redo log 和 undo log 都是存储引擎层面上生成的日志,并且都记录了数据的修改,只不过 redo log记录的是”物理级别”上的页修改操作,undo log 记录的是逻辑操作日志,比如对某一行数据进行了INSERT语句 2021-03-20 Mysql #binlog #undolog #redolog #两阶段提交
JAVA容器汇总(原理+使用)——List、Set、Deque、BlockingQueue、Map (部分源码) List 接口ArrayList底层是通过Arrays.copyof()和System.arraycopy()操作的。 非线程安全,如果需要保证线程安全,后面会介绍其它相关的容器 底层是通过数组实现,内部通过一个Object对象数组来存放元素 默认容量大小 10 ,不指定初始容量的时,第一次add操作的时候,会初始化容量为10. 扩容后的大小是原来的1.5倍数:newCapacity = oldC 2021-03-11 Java基础 #集合
力扣【LeetCode】——环形链表(判断是否有环)、环形链表(返回入环节点)【java】 环形链表(判断是否有环)题目地址:https://leetcode-cn.com/problems/linked-list-cycle/ 12345678910题目:给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 2020-12-02 LeetCode #LeetCode
力扣【LeetCode】——合并有序数组、合并有序链表【java】 合并有序数组题目地址: https://leetcode-cn.com/problems/merge-sorted-array/ 12345678题目:给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 有足够的空间(空间大小 2020-12-02 LeetCode #LeetCode