摘要: 1、标记清除法 顾名思义,算法分为标记和清除两个阶段,首先标记处需要回收的对象,在标记完成后统一回收。 缺点是标记和清除效率都比较低,而且容易产生大量不连续碎片内存。导致在分配较大对象时无法找到足够的空间,使得触发另一次标记清除。 原书图示如下: 2、复制算法 将内存分为两块,每块占50%,当其中一 阅读全文
posted @ 2018-08-02 15:03 蒋曾 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 线程的创建和关闭需要花费时间,可能会浪费资源,所以可以通过让线程复用来解决这个问题。 线程池就是这样一个概念,当需要创建线程的时候直接从线程池中获取,当关闭线程的时候直接归还线程给线程池。 ThreadPoolExecutor就是JDK提供的这样一个类。 它继承AbstructExecutorSer 阅读全文
posted @ 2018-08-02 10:48 蒋曾 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 说过ReentrantLock的大概操作之后,再来看一下它的源码。 首先说一下几个概念 JUC:java.util.concurrent 包的缩写,计算机方面有时候真的很莫名其妙,总给你弄很多看起来高大上的缩写。 AQS:AbstractQueuedSynchronizer的缩写,翻译过来就是抽象队 阅读全文
posted @ 2018-08-01 15:20 蒋曾 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 在堆里面存放着几乎所有的对象实例,堆也是垃圾回收的主要区域,那么要怎么判断哪些对象可回收,哪些不可回收呢。 下面有两个判断的算法,引用计数算法,可达性分析算法 (1)引用计数算法:在对象中添加一个计数器。每当有地方引用它时,计数器加一,引用失效时减一。在任何时候计数器为0的对象就是可回收对象。 但是 阅读全文
posted @ 2018-07-31 16:57 蒋曾 阅读(136) 评论(0) 推荐(0) 编辑
摘要: CountDownLatch和CyclicBarrier都是用来线程协作的。 先看CountDownLatch,它的常用方法有countDown()和await()。 当CountDownLatch初始化时,获取一个int参数,每次调用countDown()时,初始的int减1。await()后面的 阅读全文
posted @ 2018-07-31 16:06 蒋曾 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 一、堆溢出 点击它选择Run Configurations,进入 左边选择Java Application,选择要操作的例子,右边选择Arguments, 在VM arguments里面设置-Xms20M -Xmx20M -XX:+HeapDumpOnOutOfMemoryError 使堆的最大最小 阅读全文
posted @ 2018-07-30 15:21 蒋曾 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 重入锁是对synchronize的增强,可以代替synchronize。 重入锁使用java.util.concurrent.locks.ReentrantLock来实现。下面是一个简单的例子,相对于synchronize来说,重入锁更加细致,也更加灵活。 之所以叫重入锁,是因为对同一线程来说,这种 阅读全文
posted @ 2018-07-27 15:59 蒋曾 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 首先介绍JMM(Java内存模型):JMM是一种保证多线程之间有效的正确的协同工作的机制。 JMM有三个关键技术:原子性,可见性,有序性 (1)原子性:原子性是指一个操作是不可中断的,即一个操作开始,就不会被打扰。 (2)可见性:可见性是指当一个线程修改了共享变量的值,其他线程能不能知道。在一个操作 阅读全文
posted @ 2018-07-27 15:25 蒋曾 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 首先看储存数据结构 HashMap:transient Entry[] table; ConcurrentHashMap:final Segment<K,V>[] segments; 这里的每个Segment就相当于一个小的HashMap,而且因为是final修饰的,只能赋值一次,默认初始容量16。 阅读全文
posted @ 2018-07-27 10:32 蒋曾 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 一、线程的概念先说进程的概念:进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是线程的容器。是程序的实体。 而线程就是轻量级的进程,是程序执行的最小单位。 打个比方,进程是一家公司对外提供服务,线程就可以是公司里的各个部门或员工。线程各司其职,相互协作,使用公 阅读全文
posted @ 2018-07-25 15:40 蒋曾 阅读(178) 评论(0) 推荐(0) 编辑