当前位置:网站首页>【高并发】面试官
【高并发】面试官
2022-07-27 05:12:00 【m0_67595943】
使用Java堆内存来存储对象。使用堆缓存的好处是没有序列化/反序列化,是最快的缓存。缺点也很明显,当缓存的数据量很大时,GC(垃圾回收)暂停时间会变长,存储容量受限于堆空间大小。一般通过软引用/弱引用来存储缓存对象。即当堆内存不足时,可以强制回收这部分内存释放堆内存空间。一般使用堆缓存存储较热的数据。可以使用Guava Cache、Ehcache 3.x、 MapDB实现。
[](()堆外内存
即缓存数据存储在堆外内存,可以减少GC暂停时间(堆对象转移到堆外,GC扫描和移动的对象变少了),可以支持更多的缓存空间(只受机器内存大小限制,不受堆空间的影响)。但是,读取数据时需要序列化/反序列化。因此,会比堆缓存慢很多。可以使用Ehcache 3.x、 MapDB实现。
[](()磁盘缓存
即缓存数据存储在磁盘上,在JVM重启时数据还存在,而堆/堆外缓存数据会丢失,需要重新加载。可以使用Ehcache 3.x、MapDB实现。
[](()分布式缓存
分布式缓存可以使用ehcache-clustered(配合Terracotta server)实现Java进程间分布式缓存。也可以使用Memcached、Redis实现。
使用分布式缓存时,有两种模式如下:
单机模式:存储最热的数据到堆缓存,相对热的数据到堆外缓存,不热的数据到磁盘缓存。
集群模式:存储最热的数据到堆缓存,相对热的数据到对外缓存,全量数据到分布式缓存。
[](()缓存回收策略
------------------------------ 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 ----------------------------------
缓存的回收策略总体上来说包含:基于空间的回收策略、基于容量(空间)的回收策略、基于时间的回收策略和基于对象引用的回收策略。

[](()基于空间
基于空间指缓存设置了存储空间,如设置为10MB,当达到存储空间上限时,按照一定的策略移除数据。
[](()基于容量
基于容量指缓存设置了最大大小,当缓存的条目超过最大大小时,按照一定的策略移除旧数据。
[](()基于时间
TTL(Time To Live):存活期,即缓存数据从创建开始直到到期的一个时间段(不管在这个时间段内有没有被访问,缓存数据都将过期)。
TTI(Time To Idle):空闲期,即缓存数据多久没被访问后移除缓存的时间。
[](()基于对象引用
软引用:如果一个对象是软引用,则当JVM堆内存不足时,垃圾回收器可以回收这些对象。软引用适合用来做缓存,从而当JVM堆内存不足时,可以回收这些对象腾出一些空间供强引用对象使用,从而避免OOM。
弱引用:当垃圾回收器回收内存时,如果发现弱引用,则将它立即回收。相对于软引用,弱引用有更短的生命周期。
注意:只有在没有其他强引用对象引用弱引用/软引用对象时,垃圾回收时才回收该引用。即如果有一个对象(不是弱引用/软引用对象)引用了弱引用/软引用对象,那么垃圾回收时不会回收该弱引用/软引用对象。
边栏推荐
- How to choose a good futures company for futures account opening?
- 舆情&传染病时空分析文献阅读笔记
- GBase 8c产品简介
- 1024 | 正式称为码农的第四年,初心犹在,继续前进
- 刷脸支付用户主要优势是智能化程度高
- Day 6.重大医疗伤害事件网络舆情能量传播过程分析*———以“魏则西事件”为例
- 亚马逊测评自养号,如何进行系统性的学习?
- MySQL limit分页查询优化实践
- 个人收款码不得用于经营收款
- Web2.0 giants have deployed VC, and tiger Dao VC may become a shortcut to Web3
猜你喜欢

How can I get the lowest handling charge for opening a futures account?

怎么开立普通商品期货账户

二十五家互联网大厂软件测试笔试题总结,遇到包过。

Move protocol launched a beta version, and you can "0" participate in p2e

Choose futures companies with state-owned enterprise background to open accounts

去哪家期货公司如何开户?

MySQL如何执行查询语句

If you encounter oom online, how to solve it?

建设创客教育运动中的完整体系

Deploy redis with docker for high availability master-slave replication
随机推荐
舆情&传染病时空分析文献阅读笔记
Aquanee will land in gate and bitmart in the near future, which is a good opportunity for low-level layout
Personal collection code cannot be used for business collection
Emoji表情符号用于文本情感分析-Improving sentiment analysis accuracy with emoji embedding
GBASE 8C——SQL参考6 sql语法(5)
The NFT market pattern has not changed. Can okaleido set off a new round of waves?
Read and understand the advantages of the LAAS scheme of elephant swap
mysql优化sql相关(持续补充)
kettle的文件名通配规则
MySQL limit分页查询优化实践
PHP的CI框架学习
The main advantage of face brushing payment users is their high degree of intelligence
NFT new paradigm, okaleido innovation NFT aggregation trading ecosystem
vscode打造golang开发环境以及golang的debug单元测试
期货开户要和客户经理详谈政策
怎么开立普通商品期货账户
机器人编程与交叉学科的融合延伸
刷脸支付更符合支付宝一直做生态的理念
Mysql5.7版本如何实现主从同步
go通过channel获取goroutine的处理结果