
Java
文章平均质量分 88
子木-沐阳
纸上得来终觉浅,觉知此事必躬行
展开
-
Android Animation 分析与总结
例如:在ViewGroup中可以控制子元素的出场效果,在Activity中可以实现不同Activity的之间的切换效果。概念:在一段时间间隔内完成对象的某一个属性(位置,透明度等),由一个属性值向另一个属性值的改变。属性动画要求对象必须为指定的属性提供 set() 和 get(),否则就会失败,这里我们可以想一下为什么?属性动画是 API11 新加入的特性(nineoldandroids开源库实现向下兼容)。我们知道,补间动画只能作用于 View,而属性动画可以为 任意对象 添加动画效果;另一方面,属性动原创 2022-06-21 23:35:29 · 619 阅读 · 0 评论 -
Android 内存泄露常见场景汇总
心情么么哒,又可以白嫖咯…常见概念什么是内存泄露?该被GC回收的内存没有被回收。讲人话:短生命周期的引用被长生命周期的对象持有,导致短生命周期的对象的内存无法被GC回收。举个例子:非静态内部类默认持有外部类的引用,不幸的是,我们在外部类创建了一个该内部类的静态实例。静态实例的生命周期与长与普通实例的生命周期,而静态实例是可以作为GCRoots的根节点的,导致GC在进行可达性分析时,外部类的引用一直在引用链上,不被回收。这样就导致了外部类对象的内存泄露。持续的内存泄露会导致内存溢出什么是内存原创 2021-11-12 17:02:06 · 2078 阅读 · 0 评论 -
Java 线程生命周期
线程生命周期准备状态触发时机:使用 new 关键字创建一个线程。特点: 准备状态的线程不能被CPU调度。就绪状态特点: 就绪状态的线程才能被CPU调度,通过线程切换,获取CPU时间片的使用权。触发时机:调用线程的 start()时间片用完,即硬件设备发出中断指令,CPU进行线程切换。线程主动调用 yield()。即:线程在等待锁的过程中,主动让出时间片线程内部使用了锁,在没有获得锁的时候,也是在就绪状态运行状态触发时机:该线程获取CPU时间片的使用权后,由操作系统调用原创 2021-11-11 16:59:45 · 612 阅读 · 0 评论 -
Java垃圾回收学习与总结
文章目录GC垃圾回收以下内容参考至 [Android工程师进阶](https://kaiwu.lagou.com/course/courseInfo.htm?courseId=67#/detail/pc?id=1856)什么是垃圾什么时候触发垃圾回收哪些对象是垃圾?1. 引用计数算法2.可达性分析算法验证GC Root1. 验证栈帧中的局部变量表中引用的对象可以作为GC Root2. 验证方法区中的静态变量引用的对象可以作为GC Root3. 验证活跃线程作为GC Root4. 验证成员变量是否可以作为 G原创 2020-07-15 12:48:52 · 187 阅读 · 0 评论 -
LinkedHashMap 学习总结
文章目录LinkedHashMap简介LinkedHashMap源码分析总结双向链表 LinkedHashMapEntryput(K k, V v) 添加数据并构建双向链表get(K key) 访问数据remove(key) 删除指定key 的节点总结问题LinkedHashMap简介我们知道 HashMap 是 数组+链表/红黑树 的存储结构,它不能保证遍历顺序和插入顺序的一致。LinkedHashMap是HashMap的子类,与HashMap有着同样的存储结构 数组+链表/红黑树,不同的是: Li原创 2020-07-14 17:23:47 · 244 阅读 · 0 评论 -
并发库——ReadWriteLock
文章目录原则概念原理写锁的获取与释放读锁的获取实战总结原则允许多个线程同时读共享变量只允许一个线程写共享变量如果一个线程正在写共享变量,此时禁止线程读共享变量。通过以上原则,我们不难看出:读写锁与互斥锁最大区别是:读写锁允许多个线程同时读共享变量,而互斥锁不允许。这也是读写锁在读多写少环境下性能优于互斥锁的关键。概念可重入:当线程拿到锁的时候,在临界区再次尝试获取同一把锁,此时会锁的状态*volatile int state++*会加一。这种特性叫做可重入。锁升级:在拿到读锁且没有释放原创 2020-07-09 17:09:57 · 157 阅读 · 0 评论 -
并发库 —— CopyOnWriteArrayList
概述CopyOnWrite(COW)是在写操作的时候copy当前数据,然后在写完数据之后设置成新的数据。适用于读多写少的并发场景。CopyOnWrite 使用了 ReentrantLock(支持重入的独占锁) 来支持并发操作。ReentrantLock 是一种支持重入的独占锁,任意时刻只允许一个线程来获得锁。ReentrantLock 默认是非公平锁(即不按照进入等待队列的顺序唤醒线程)机制。本质是一种延时策略,只有在真正需要复制的时候才复制,而不是提前复制好。源码分析添加与读取元素fina原创 2020-07-02 16:16:11 · 231 阅读 · 0 评论 -
虚拟机类加载机制总结与整理
虚拟机类加载机制,来自《深入理解Java虚拟机》虚拟机把描述的数据从Class文件加载到内存,并对数据进行校验、转化解析和初始化,最终形成可以被Java虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。类从被加载到虚拟机内存开始,到卸载内存为止,它的生命周期包括了加载,验证,准备,解析,初始化,使用,卸载七个阶段,其中验证,准备和解析三个部分统称为连接。1.类加载的过程类加载的全部过...原创 2020-01-03 11:01:06 · 153 阅读 · 0 评论