Snailclimb / Snailclimb/JavaGuide
redis内存回收
Nessuno ha ancora preso questa issue.
- Lingua principale
- JavaScript
- Stelle
- 159k
- Fork
- 46.1k
- Merge medio
- 14h 36m
- PR unite (30g)
- 6
Descrizione
如redis-内存回收和内存共享部分所描述: 因为c语言不具备自动内存回收功能,当将redisObject对象作为数据库的键或值而不是作为参数存储时其生命周期是非常长的,为了解决这个问题,Redis自己构建了一个内存回收机制,通过redisobject结构中的refcount实现.这个属性会随着对象的使用状态而不断变化。
1、创建一个新对象,属性初始化为1
2、对象被一个新程序使用,属性refcount加1
3、对象不再被一个程序使用,属性refcount减1
4、当对象的引用计数值变为0时,对象所占用的内存就会被释放
其中不太理解如何进行这种基于refcount的引用计数回收,对于过期的数据进行的是定期删除和惰性删除,当内存要溢出时进行的是淘汰机制(noeviction、volatile-lru等),但是文中所描述的这种引用计数的回收方式在何时进行呢?
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia dalle sezioni sul recupero della memoria e sulla condivisione della memoria di Redis citate nell’issue, quindi esamina la spiegazione di redisObject e refcount insieme alle descrizioni della scadenza e dell’eviction. Il lavoro è completato quando la documentazione spiega chiaramente quando vengono rilasciati gli oggetti conteggiati per riferimento e in che modo ciò differisce dalla scadenza e dall’eviction.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- redis
- Ambito
- documentation
- Tipo di issue
- Documentazione
- Difficoltà
- 1/5
- Tempo stimato
- Meno di un'ora
- Stato di attività
- Ferma
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 30/100