高并发对象池思考

本文探讨了Java对象的生命周期,强调避免频繁创建和销毁对象以提高性能。通过建立对象池来重复利用对象,并讨论了对象池的初始化策略。在高并发场景下,采用CAS算法确保线程安全和并发性能。测试结果显示,对象池在时间和内存效率上优于直接创建新对象,显著提升了性能并减少了内存开销。
摘要由CSDN通过智能技术生成

对象的生命周期

Java对象的生命周期大致包括三个阶段:对象的创建,对象的使用,对象的清除。因此,对象的生命周期长度可用如下的表达式表示:T = T1 + T2 +T3。其中T1表示对象的创建时间,T2表示对象的使用时间,而T3则表示其清除时间。由此,我们可以看出,只有T2是真正有效的时间,而T1、T3则是对象本身的开销。所以,避免和减少T1和T3的时间,能有效的提升程序的性能。

对象池

在EffectJava的第五条建议中,明确给出了“避免创建不必要的对象”这样的建议。对于可重复利用的对象,我们不应该频繁的创建销毁,而是应该反复利用。

重复利用对象,我们就需要建一个对象池,把所有可复用的对象都统一放到池中,同时对外提供obtain()方法来获取对象。通常,我们利用静态对象数组来实现对象池。

对象池的初始化策略分为两种,一种是统一初始化,即在特定时机统一初始化池内所有对象,第一次使用的时候会有一定的开销。另一种是即时初始化,就是在使用中进行初始化,每次都会有一定的开销,直到池内充满。

高并发

在对象池创建好之后,我们就需要考虑如何分配、回收对象池的对象了。由于是路由系统的载体类,所以势必会有多线程进行访问,我们还要考虑到线程安全,以及并发性能。

关于线程安全,一般的做法是通过synchronized关键字来进行线程同步。不过这么做的话,相当于是对ob

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值