面试题答案
一键面试对象池模式优化原理
对象池模式通过预先创建一组对象,并在需要时从池中获取对象,使用完毕后再将对象放回池中,避免了频繁的对象创建和销毁,从而提升性能。
Kotlin 实现简单对象池示例
class ObjectPool<T>(private val createObject: () -> T, private val maxPoolSize: Int) {
private val pool = mutableListOf<T>()
fun getObject(): T {
return if (pool.isNotEmpty()) {
pool.removeAt(0)
} else {
createObject()
}
}
fun returnObject(obj: T) {
if (pool.size < maxPoolSize) {
pool.add(obj)
}
}
}
// 使用示例
fun main() {
val pool = ObjectPool({ println("创建新对象"); "新对象" }, 3)
val obj1 = pool.getObject()
val obj2 = pool.getObject()
val obj3 = pool.getObject()
val obj4 = pool.getObject()
pool.returnObject(obj2)
val obj5 = pool.getObject()
}
在上述代码中:
ObjectPool
类实现了对象池的功能,createObject
是一个用于创建新对象的函数,maxPoolSize
定义了对象池的最大容量。getObject
方法从对象池中获取对象,如果池为空则创建新对象。returnObject
方法将使用完毕的对象放回对象池,如果对象池未达到最大容量。- 在
main
函数中展示了对象池的使用过程,先获取对象,然后归还对象,再次获取对象时可从池中获取已归还的对象。