JVM缓存

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/asdfgggggggg/article/details/85161749

缓存是将数据在整个程序生命周期中存储的内存;

作用:

(1)能够提升获取数据的效率,避免IO读取耗时操作;

(2)被大量的读取,更新频率低;

(3)经常变化,但是不会被持久化的;

方式:

使用static关键字开辟内存与搜索时间复杂度为O(1)的HashMap来存储数据提高读取效率;然后实现相应的缓存写入、更新、读取、删除等逻辑;

问题:

(1)上述提到缓存存活在程序应用的生命周期中,在程序应用迭代的过程中,在传统上会经历程序的重启;

spring-boot实现了热部署的功能,即在不需要对程序进行重启的情况下对程序进行迭代;

其原理就是监听class文件是否发生改变,如果改变则使用类加载其将字节码重新读入到内存中;缺点在于这种方式会占用大量的内存造成程序的卡顿,常用于本地开发中;

spring-boot提供了一个spring-boot-devtools包,其作用就是在不重启服务的情况下将服务重新部署到服务器上。原理是使用两个类加载器,一个用于加载变化的类文件,一个用于加载未发生变化的类文件,直接对未改变的类文件进行加载极大的提高整个效率。

使用第三方软件作为缓存,例如redis;

相对于hashMap的优势:

按照内外置缓存的优劣:(1)避免了程序重启导致缓存存储数据的消失。(2)在存储结构上,相对于hashMap,有更多的数据结构无模式的存储更方便; 

猜你喜欢

转载自blog.csdn.net/asdfgggggggg/article/details/85161749
JVM