IO

  • BIO:BlockIO,同步阻塞IO。发起请求 –>一直阻塞–>处理完成
  • NIO:New IO Non-Block IO,同步非阻塞IO。 Selector主动轮询channel–>处理请求–>处理完成
  • AIO:异步非阻塞IO。发起请求–> 通知回调

Read More

String

StringBuilder和StringBuffer

和String类不同的是,StringBuffer和StringBuilder类的对象能够被多次的修改,并且不产生新的未使用对象。
StringBuilder 类在Java5中被提出,它和StringBuffer之间的最大不同在于StringBuilder的方法不是线程安全的

垃圾回收机制

对象存活

GC算法

运行时数据区

可达性分析与引用计数

引用计数法

给对象增加一个引用计数器,每当有一个地方引用它时,计数器就+1;当引用失效时,计数器就-1;任何时刻计数器为 0 的对象就是不能再被使用的,即对象已“死”。
在主流的 JVM 中没有选用引用计数法来管理内存,最主要的原因是引用计数法无法解决对象的循环引用问题。

可达性分析算法

通过一系列称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索走过的路径称为“引用链”,当一个对象到 GC Roots 没有任 何的引用链相连
时(从 GC Roots 到这个对象不可达)时,证明此对象不可用。以下图为例:

Read More