缓存替换策略

理论:

一个程序90%时间运行在10% 的代码上

时间局部性原理

近期被引用过的内存,未来会被多次引用

空间局部性原理

存储器附近的内容被访问,未来附近很可能也会被访问

考虑因素,其实都是为了用更少的内存缓存更多的结果更快的取到

时间效率

空间利用率

命中率

实现难易

这么几种策略

随机替换,达到替换条件的时候生成随机数

FIFO,先进先出策略,不符合局部性原理

LRU,最近最常访问元素提前,替换队尾即可

时间: 2024-08-29 20:43:30

缓存替换策略的相关文章

基于Alluxio内存文件系统的缓存策略

Alluxio是一种基于内存的分布式文件系统,支持不同的缓存替换策略,来替换内存中的文件快.Alluxio中的文件时以文件块形式组织,其中文件通过自己实现的inode数据结构记录文件属性并索引. 下面首先介绍几种不同的缓存策略,这些缓存策略被广泛的应用在web,数据库,文件系统中. 1 基于访问频率的缓存策略 这种缓存策略是根据缓存单位的(在Alluxio中是文件块Block)访问频率来进行缓存调度,最常用的策略是LFU(Least Frequently Used)策略.该策略每次淘汰访问频率最

Volley HTTP 缓存机制

Volley HTTP 缓存规则 在介绍Volley的HTTP缓存机制之前,我们首先来看一下HTTP HEADER中和缓存有关的字段有: 规则 字段 示例值 类型 作用 新鲜度 Expires Sat, 23 Jul 2016 03:34:17 GMT 响应 告诉客户端在过期时间之前可以使用副本 Cache-Control no-cache 响应 告诉客户端忽略资源的缓存副本,强制每次请求都访问服务器 no-store 响应 强制缓存在任何情况下都不要保留任何副本 must-revalidate

LRU算法 - LRU Cache

这个是比较经典的LRU(Least recently used,最近最少使用)算法,算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”. 一般应用在缓存替换策略中.其中的”使用”包括访问get和更新set. LRU算法 LRU是Least Recently Used 近期最少使用算法.内存管理的一种页面置换算法,对于在内存中但又不用的数据快(内存块)叫做LRU,Oracle会根据那些数据属于LRU而将其移出内存而腾出空间来加载另外的数据,一

Atitit 研发体系建立 数据存储与数据知识点体系知识图谱attilax 总结

分类具体知识点原理规范具体实现(oracle,mysql,mssql是否可以自己实现说明 数据库理论数据库的类型 数据库理论,网状,层次, 数据库理论树形数据库注册表,hashtable 数据库理论,kv数据库.hashtable 数据库理论Oodb 数据库理论nosql db 数据库理论隔离级别 数据库理论 数据库理论Er模型 数据库理论Acid数据库完整性 数据库理论关系模型 数据库理论   sql 数据库理论 数据库理论存储过程 数据库理论 触发器 数据库理论 视图 约束 数据库理论 数据

NDN与TCP/IP

搬运自http://blog.csdn.net/programmer_at/article/details/49203241  当前TCP/IP协议存在哪些问题?如何改进? 当时没有回答好,然后提到了NDN可以针对TCP/IP做出改进,但是在行家面前就漏 洞百出,一是对TCP/IP网络理解不够深入,另外一方面是自己对NDN比较陌生.趁着这段时间比较得闲,在网上搜了<Named Data Networking(NDN) Project>(2010.10)和初略看了看北大出版的<信息中心网络

squid代理上网

传统代理 需要手动设置代理服务器的地址和端口,然后使用代理服务器访问网络 配置squid.conf 主要配置如下 http_port 3128//用于指定代理服务器监听的地址和端口 cache_mem 64 MB//指定缓存功能使用的内存空间,建议为实际物理内存的1/4 maximum_object_size 4096 KB//允许保存到缓存空间的最大文件大小 visible_hostname localhost.localdomain  //代理服务器的本地主机名称,uname –n可以看到

Java 如何有效地避免OOM:善于利用软引用和弱引用

原作者:海子 出处:http://www.cnblogs.com/dolphin0520/ 本文归作者海子和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利. 想必很多朋友对OOM(OutOfMemory)这个错误不会陌生,而当遇到这种错误如何有效地解决这个问题呢?今天我们就来说一下如何利用软引用和弱引用来有效地解决程序中出现的OOM问题.下面是本文的目录大纲: 一.了解 强引用.软引用.弱引用.虚引用的概念 二.进一步理解软引用

LVS+Keepalived+Squid+Nginx+MySQL主从 高性能集群架构配置

原文地址:LVS+Keepalived+Squid+Nginx+MySQL主从 高性能集群架构配置 作者:gron 原文链接:http://www.linuxidc.com/Linux/2012-07/65547.htm 架构图 先进行优化 vi /etc/sysctl.conf   # 编辑sysctl.conf文件添加以下内容 net.ipv4.tcp_rmem = 4096 87380 4194304 net.ipv4.tcp_wmem = 4096 65536 4194304 net.c

LVS+Keepalived+Squid+Nginx+MySQL主从高性能集群架构部署方案

方案一,在tomcat的workers.properties里面配置相关条件 worker.tomcat.lbfactor=50 worker.tomcat.cachesize=10 worker.tomcat.cache_timeout=600 worker.tomcat.socket_keepalive=1 worker.tomcat.socket_timeout=300 Linux内核优化: vi /etc/sysctl.conf   # 编辑sysctl.conf文件添加以下内容net.