自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 并发问题的新思路——ThreadLocal

ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。 Synchronized用于线程间的数据共享,而ThreadLocal则用于线程间的数据隔离。 从Handler中进入ThreadLocal的世界 Android中一个线程只能有一个Looper,如果一个线程已经有Looper,我们再在线程中调用Looper.prepare()方法会抛出RuntimeExcept...

2019-03-24 16:54:16 188

原创 GC策略算法浅析

GC GC(Garbage Collection)是Java虚拟机(JVM)垃圾回收器提供的一种用于在空闲时间不定时回收无任何对象引用的对象占据的内存空间的一种机制。 在C/C++里是由程序猿自己去申请、管理和释放内存空间,因此没有GC的概念。而在Java中,后台专门有一个专门用于垃圾回收的线程来进行监控、扫描,自动将一些无用的内存进行释放,这就是垃圾收集的一个基本思想,目的在于防止由程序...

2019-01-17 09:52:32 612 1

原创 RxLifecycle使用和源码分析

## RxJava内存泄漏 为什么RxJava会发生内存泄漏? ​ 在当前页面用RxJava发布订阅后,如果当期页面finish时,没有及时取消订阅,这会导致Activity或Fragment无法回收,从而发生内存泄漏。 RxLifecycle可以通过绑定生命周期的方式,来解决RxJava内存泄漏的问题。 使用 首先需要依赖以下两个库,从而实现两种不同的方法 // 依赖以下两个库,...

2019-01-17 09:51:00 285

原创 ClassLoader浅析(二) —— Android ClassLoader

本篇是基于上一篇ClassLoader(一) —— Java ClassLoader。 Android虚拟机和JVM一样,运行程序时首先要将对应的类加载到内存中。但是和JVM不同的是Android虚拟机上运行的是Dex字节码,因此Android的ClassLoader和Java的ClassLoader有一定不同。 Android 类加载 Android中的类加载器有 BootClassL...

2019-01-17 09:42:36 207

原创 ClassLoader浅析(一) —— Java ClassLoader

ClassLoader的具体作用就是将字节码格式文件加载到虚拟机中去。Java中是把class文件加载到JVM。Android中是把dex/odex文件加载入虚拟机。 当JVM启动的时候,不会一下子把所有的class文件加载进JVM,而是根据需要去动态加载。 JAVA类加载 在Java中有三个类加载器 **Bootstrap ClassLoader:**启动类加载器,最顶层的加载类。负责加...

2019-01-17 09:41:00 289

原创 乐观锁和悲观锁

悲观锁(Pessimistic Lock) 悲观锁是保证只有自己能进行操作。在每次获取数据的时候,都担心数据已经被修改过,因此在每次获取数据之前都要进行加锁,确保在使用数据的时候不会被别人修改过。但是这也导致了别人想要获取该数据时就会堵塞直到它拿到锁。简而言之,共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程。 Java中synchronized和ReentranLock...

2019-01-17 09:37:02 139

原创 偏向锁,轻量级锁,自旋锁,重量级锁

在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁, 但是随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,Java SE1.6中 为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级锁。 在Java SE1.6中,锁一共有4种状态,级别从低到高依次是:无锁状态、偏向锁状态、轻量级锁状态和重量级锁状态。 这几...

2019-01-17 09:27:49 225

原创 对象内存布局

对象在内存中的存储可以分为三个区域:对象头(Header),实例数据(Instance Data)和对齐填充(Padding)。 头对象 对于不同的对象类型,虚拟机存储的长度也不同。如果对象是数组类型,则虚拟机用3个字宽存储对象头,如果对象是非数组类型,则用2字宽存储对象头。在32位虚拟机中,1字宽等于4字节,既32bit。入下图所示: 长度 内容 说明 32/64bit ...

2019-01-16 13:12:16 187

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除