摘要:
刚才起夜, 被黑暗的环境吓到了. 当时有一种四面八方无数双眼睛在看着你, 又好像有什么会突然出现, 然后我赶紧打开灯, 这种感觉立刻烟消云散了, 好像根本没有来过一样. 很显然, 消除这种恐惧感的, 是光. 有没有光对我来说有什么区别呢? 视觉, 有光后, 能够看到周围的环境, 又因为我们坚信自己的 阅读全文
摘要:
概述 也并不是一个新的回收算法, 而是结合之前算法的一种新的思路. 之前说的各种垃圾回收, 都需要暂停程序, 执行GC, 这就导致在GC执行期间, 程序得不到执行. 因此出现了 , 它并不会等GC执行完, 才将控制权交回程序, 而是一步一步执行, 跑一点, 再跑一点, 逐步完成垃圾回收, 在程序运行 阅读全文
摘要:
概述 并不是一个新的算法, 而是将之前的回收算法结合利用, 分场景使用. 简单来说, 的思路, 就是给每个对象都分配一个年龄, 年龄越大的, 活的越久, 被回收的概率就越小. 经验表明, 大部分对象在生成后马上就成了垃圾. 也就是说, 年轻人要多运动, 没事的时候多看看, 常回收. 老年人好静, 一 阅读全文
摘要:
概述 还记得标记清除和复制算法的问题么? 堆使用效率低和碎片化问题. 那么有没有能够利用整个堆, 有没有内存碎片化问题的算法呢? 这就是标记压缩算法了. 简单来说, 标记压缩算法就是将堆中的所有活动对象整体向左移, 将对象间的空隙消除. 在GC执行前的内存: GC执行后的内存: 恩, 就是这么个意思 阅读全文
摘要:
概述 复制算法就是将内存空间二等分, 每次只使用其中一块. 当执行GC时, 讲A部分的所有活动对象集体移到B中, 就可以讲A全部释放. 画个图就是: 在执行GC前, 内存长这样: 当执行GC后, 内存就变成这样了: 还记得 的问题是什么吗? 内存碎片化严重. 现在好了, 碎片化问题解决了, 阅读全文
摘要:
概述 引用计数法又是什么鬼呢? 顾名思义, 对对象的引用进行计数. 通过记录每个对象被引用的次数, 来确定这个对象是否可以被回收. 实现 首先, 对对象的引用数量进行管理, 什么时候会更新呢? 1. 创建对象: 新建一个对象(对这个新的对象引用数量+1) 2. 更新指针: 将一个指向A对象的指针重新 阅读全文
摘要:
概述 标记清除算法, 描述起来很简单, 从名字上就能看出, 分为两个阶段: 1. 标记阶段: 遍历所有对象, 将活动对象都打上标记 2. 清除阶段: 遍历堆, 将没有标记的对象释放掉. 介绍完毕, 本文结束. 开玩笑, 确实看上去很简单啦. 那就具体思考一下实现吧. 实现 介绍写的很清楚了, 实现也 阅读全文
摘要:
GC是什么 GC就是垃圾回收, 哎, 现在Java如日中天, JVM都有些了解吧. 其中的垃圾回收还经常在面试中问道(虽然我忘完了). 当然, 垃圾回收不只是JVM, Python等高级语言都用到了. 简单说, GC完成的任务就两件事: 1. 找到内存中已经无用的垃圾 2. 将垃圾回收, 以便于之后 阅读全文
摘要:
引出 大家都用过QQ或者微信吧, 当我们注册的时候, 会被自动分配一个QQ号, 这个号码是全局唯一且固定的, 那么, 如果是你来写的话, 如何为新注册的用户分配一个号码呢? 亦或是一个电商网站, 要为每个订单生成一个订单号? 再或是一个即时聊天, 要为每个消息生成一个消息ID?? 我简单想了想 方案 阅读全文
摘要:
概述 RPC 这个东西是什么? 第一次听说他, 还要在它的前边加个 G , 当时我以为 GRPC 是一项技术, 后来才知道, 并不是这样. GRPC 只是 RPC 的谷歌实现. 谷歌搜了一下, RPC 就是一种: 远程函数调用, 看到这里, 我已经等不及了, 不往下看了, 先自己实现一个. 如果只给 阅读全文