在VirtualBox中增加现有虚拟机的磁盘大小
|
如何解决内存碎片 你可能会有疑问,内存碎片会有什么危害呢? 我们还是以上边的箱子来表示。你想想,如果你要把这些箱子都装上车运走,每个箱子里都有空出来的空间(内存碎片),那么运行一次的效率及性价比是不是会很低。同样,在 Redis 中,由于大量的碎片存在,会导致实际利用率变低。 那么我们有没有办法来解决内存碎片呢? 推倒重来 第一种方式很简单,直接推倒重来。也就是把 Redis 直接重启完事儿,内存一断电全世界就清净。但是这种暴力省事的方式却有很多隐患。 生产环境中你这么搞的话得提前烧烧香,保佑不会出什么问题。如果你没进行过持久化,那么就别烧了,烧了也没用。如果有持久化的话,那么恢复时长还得取决你持久化文件的大小,在这个阶段还无法提供服务。糟心不? 空间置换 那么有没有不这么刺激的方式。 有的,高版本的 Redis 提供了内存碎片清理的方式。一言以蔽之,就是空间置换。 怎么个置换法?我们的目的是为了消除内存碎片,那么我们把已使用的内存数据重新整理到一起不就行了吗?让不连续的空间变成连续的,剩下的空间,继续来分配。
画个图理解下: roactor和Reactor的区别 Proactor是基于异步I/O的概念,而Reactor一般则是基于多路复用I/O的概念 Proactor不需要把数据从内核复制到用户空间,这步由系统完成 欢迎指正文中错误 参考文章 聊聊Linux 五种IO模型[1] 网络io模型[2] 网络IO[3] 5种网络IO模型[4]
epoll原理详解及epoll反应堆模型[5] 那如果我将数据 A 从 3 字节修改为 4 字节呢?此时为了保持数据 A 的空间连续性,操作系统会把 B 拷贝到别的空间。此时又会出现 1 个字节的碎片。 删除数据
理解了修改数据,删除数据就很容易明白了。还是上边的例子,此时删除了数据 B,那么就释放了 2 个字节的空间。这样对于整个内存空间来说就产生了 2 个字节的碎片。 (编辑:孝感站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
