现在我唯一疑惑的就是关于容量的控制问题如果业务对象包含的层次少则问题不大,否则如果关系复杂
A包含B,B也可以包含A,那就问题多多了。另外,就算不会出现互相包含的问题,如果业务对象关系复杂,那实现
Cacheable也是一个麻烦的事情今儿跟我一同事讨论,他说不要getSize()方法,随便往内存加,让jvm处理
内存的事情,我想这肯定是不可取的,首先jvm对内存的控制,和我希望获取
内存的容量的控制,这是两个概念,一个是系统级别的控制(jvm),一个是
应用级别的控制。
但是HashMap等java提供的容器是自动增长的,所以如果不加容量控制,缓存
的东东就很轻易的过大过多,内存消耗过快,反倒失去了提高效率的初衷比如说:
系统内存有200M,100M在系统启动时候一些通用组建的缓存用去,还剩下
100M,系统内存少于50M时候系统的效率会大幅下降;现在使用缓存,如果
不考虑缓存的占用空间,任意使用,那么缓存带来的效率提升可能远远不及
系统因为内存不够所造成的效率下降的幅度大,岂不是得不偿失