JVM垃圾收集与内存分配策略

虽然比较详尽的分析了JVM各个垃圾收集算法的执行过程,以及对于各个垃圾收集器的介绍,但似乎条理并不那么清晰。“只看这一篇”的梗实在炒烂了,但事实上这篇文章还是希望在之前对于Java GC的了解上,更加系统的整理一下,旨在梳理出清晰系统的知识网络。

不算图文并茂,但字字珠玑。还是想说一句,关于Java GC,在我的site上面,只看这一篇文章就够了!

Read More

Java ClassLoader详解

源自朋友踩的一个坑:这位仁兄将一个工具类的静态方法加上synchronized关键字后,预期在各个线程之间做同步,预期是在获得类锁后访问该静态方法的各个线程互斥。暂且不谈效率问题,他告诉我这样synchronized之后同步失败了,显然是不科学的。在讨论一番之后,发现他是在两个service中分别启动了一个线程,这两个线程想要互斥的访问加载上来的工具类的静态方法。。。

Read More

Java多线程 —— 线程池详解

合理利用线程池能够带来三个好处。

  1. 降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。
  2. 提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。
  3. 提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。

但是要做到合理的利用线程池,必须对其原理了如指掌。

Read More

Java Stream详解

在讨论Stream之前,我们有必要介绍一下lambda的作用域,因为stream通常是与lambda搭配来使用的,并且最近在工作中也遇到了作用域上面的问题(无法访问接口的默认方法)。

Read More