pet*_*erk 3 java garbage-collection weak-references phantom-reference soft-references
在C++中,我使用引用计数对象来填充"自动"回收对象池
SmartPointer<ObjType> object = pool.getObject(); // hold reference
// ... do stuff with object over time.
object = nullptr; // that is when reference
// count goes to 0
Run Code Online (Sandbox Code Playgroud)
- 现在我在C++对象上有一个"onFinalRelease()"方法,当refcount达到0时会被调用.我可以覆盖它(默认是delete(this))来自动回收对象而不是销毁它们.
问题是我可以使用java引用类型和引用池的某种组合来实现此模式.当然,这对于一种大型复杂的昂贵而言,在有意义的情况下创建对象.那是我想做的:
SomeReference r = referenceQueue.getReference();
pool.recycle(r.takeBackUnusedObjectFromGC()); // ??????????????????????????
Run Code Online (Sandbox Code Playgroud)
这真是太棒了:)
您可以使用PhantomReference
s来执行此类操作.让一个接口(代理)对象具有对昂贵对象的(强,单向)引用.还要对池管理中昂贵的对象进行强有力的引用.保持PhantomReference
接口对象.一旦PhantomReference
出现它ReferenceQueue
你肯定知道昂贵的对象没有通过接口对象使用(甚至允许完成).现在可以使用新的接口对象重用昂贵的对象.
但是,它可能不值得.
归档时间: |
|
查看次数: |
1608 次 |
最近记录: |