在项目启动时,将需要使用的对象,进行提前实例化,预加载存入内存中,以备之后使用时可以节省时间,这就是空间换时间,但是此方法会占用内存,如果数据量过大,不建议使用此方法,会导致内存大量被占用而运行缓慢
简单来说就是,你打lol,在团战的时候疯狂操作,需要大量数据,这个时候就会卡顿,但是空间换时间会把你操作的时候需要的数据在你刚登录LOL的时候就加载出来了,所以你操作的时候只需要从内存里拿出来用就行了,这就导致你操作的时候本来该卡顿,但是卡顿被挪到了刚登录游戏的时候,操作就丝滑不卡顿分分钟一打五五杀了
例如
我项目中很多方法都需要数据库中用户表的账号信息,那就可以写一个类来实现空间换时间将用户表中所需要的查询出来放入内存中.
设计一个类
public class UserStrategy(){
@Autowired
private UserMapper userMapper;
private static User USER = new User();
//空间换时间,预加载数据
@PostConstruct
public void init() {
USER = userMapper.select("条件字段");
}
}
这个类在项目启动时就会预加载,查询数据存入内存中以备之后使用(这里为什么不适用static静态代码块呢?是因为如果使用静态代码块的话,会导致在自动装配之前执行,会报错,@PostConstruct注解是Java的注解,告诉系统这个方法是静态方法要启动时一起预加载)