摘要:
取模有两个主要的缺点 散列不均匀 增加节点、删除节点后节点需要rehash 为了解决上述两个主要问题,引入了一致性Hash算法。 解决散列不均匀 首先,将0到 232 想象成一个圆,就像钟表一样,钟表的圆可以理解成由60个点组成的圆,而此处我们把这个圆想象成由 232 个点组成的圆。假设有两个数据节 阅读全文
摘要:
由于Java11中ZGC的出现,尽量不要对GC调优的研究下太多功夫,对未来来说,这是贬值的。 新生代的垃圾回收器 收集器 算法 收集器类型 说明 适用场景 Serial 复制算法 单线程 进行垃圾回收时,须暂停所有工作线程,知道回收完成 简单高效,适合内存不大的情况 ParNew 复制算法 多线程并 阅读全文
摘要:
对象一定分配在堆中吗? JVM通过逃逸分析,那些逃不出方法的对象会在栈上分配。 什么是逃逸分析? EscapeAnalysis,逃逸分析,指的是虚拟机在运行期通过计算分析将原本在堆上分配的对象改成在栈中分配,这样的好处是栈上分配的对象随着线程的结束而自动销毁,不依赖于GC,可以降低垃圾收集器运行的频 阅读全文
摘要:
什么是垃圾回收? 垃圾回收的是什么? 如何判断为垃圾? 垃圾是怎样被回收的? 垃圾回收哪些区域的内存? 什么是垃圾回收 垃圾回收就是将被虚拟机视为垃圾的对象所占的内存释放掉。 垃圾回收的是什么 回收的是对象所占的内存 如何判断为垃圾 在垃圾收集器对堆内存进行回收前,会先判断哪些对象还在“存活”,哪些 阅读全文
摘要:
什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构。 类的生命周期 其中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中,加载、验证、准备和初始化这四个阶段 阅读全文