本文主要是介绍java动态缓存成长小纪(三)——缓存大小估算,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
我觉得对缓存认识,仅仅会写缓存及其淘汰算法是肤浅的、不负责任的。我们还需要决定,什么样的数据是需要进行缓存,多大的数据才能进行缓存。
首先,缓存数据往往是读取次数非常频繁的,但是底层数据不能更新太快,否则会导致缓存的“脏读”。我在一本书上看到的是读写比要大于10。
另外,缓存数据不能太大,缓存数据过大会大大占用JVM内存空间,同样不利于程序响应。
所以,在添加缓存之前,需要知道缓存规模大小。
例:某个电网有大概100个水电站,系统需要提取这100个水电站的每日信息(double类型),时间尺度为15min,像这样的信息一共有10类(水位、气象、发电等...),问需要缓存多大?
答案:对于一个电站某日的1类信息,因为是每15min一次的,那么每小时4条数据,每天有96条数据,为double[96]。一共10类,即10个double[96],一共100个电站,故有100*10*double[96]的数据量。
大小可以估算一下:100*10*96*8≈8*10^5(bit),大约是1M的数据量。所以占用的内存空间不大。
这篇关于java动态缓存成长小纪(三)——缓存大小估算的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!