Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1853697
  • 博文数量: 184
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2388
  • 用 户 组: 普通用户
  • 注册时间: 2016-12-21 22:26
个人简介

90后空巢老码农

文章分类

全部博文(184)

文章存档

2021年(26)

2020年(56)

2019年(54)

2018年(47)

2017年(1)

我的朋友

分类: NOSQL

2019-07-27 23:42:20

今天来聊聊redis当中的对象(别想太多- -||)
感觉需要补充的有三部分:
1. 内存回收
由于C语言并不具备自动内存回收功能,所以redis在自己的对象系统中构建了一个引用计数来实现内存回收,通过这一机制,程序可以通过跟踪对象的引用计数信息,在适当的时候自动释放对象并进行内存回收。当新建一个对象时,引用计数的值会初始化为1;当对象被一个新程序使用时,引用计数+1, 当对象不再被一个程序使用时,它的引用计数-1;当对象的引用计数值变为0时,对象所占的内存会被释放

2. 对象共享
除了用于实现引用计数内存回收机制之外,对象的引用计数属性还带有对象共享的作用。在redis中,让多个键共享同一个值的对象需要执行以下两个步骤:1)将数据库键的值指针指向一个现有的对象;2)将被共享的值对象的引用计数+1;
3. 对象的空转时长
redisObject结构当中还包含一个属性叫做lru,该属性记录了对象最后一次被命令程序访问的时间,程序可以根据当前时间减掉这个值来获取这个对象的空转时长,这样的话,如果需要内存回收之类的工作,就可以利用这个特征来搞点事情了~~~
阅读(1018) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~