面试题答案
一键面试- 对象池
- 优化方式:提前创建一定数量的对象并放入对象池中,当需要使用对象时,从对象池中获取,使用完毕后再放回对象池中,而不是每次都创建新对象。
- 原理:减少了对象创建和销毁的开销。对象的创建涉及内存分配、初始化等操作,销毁时涉及垃圾回收相关操作。通过对象池复用对象,避免了这些频繁的操作,提高了性能。例如在数据库连接池技术中,通过复用数据库连接对象,减少了每次获取新连接的开销。
- 享元模式
- 优化方式:对于一些细粒度且重复使用的对象,将对象的状态分为内部状态(不随环境改变且可共享的部分)和外部状态(随环境改变且不可共享的部分)。共享相同内部状态的对象,外部状态通过参数传入。
- 原理:减少了内存中对象的数量。当有大量相似对象时,将共享部分提取出来,避免每个对象都重复存储相同信息,从而节省内存空间,同时也减少了对象创建的开销。比如在图形绘制系统中,对于大量相同颜色和形状的图形对象,可以使用享元模式共享这些不变的属性。
- 延迟初始化
- 优化方式:在真正需要使用对象时才进行创建,而不是在程序启动或某个模块初始化时就创建对象。
- 原理:避免了不必要的对象创建。如果对象在程序运行过程中可能不会被用到,提前创建会浪费内存和创建对象的开销。通过延迟初始化,只有在需要时才创建,提高了资源的利用率。例如在单例模式的懒汉式实现中,通过延迟初始化,只有在第一次调用获取实例的方法时才创建单例对象。