![](/img/trans.png)
[英]How access event listeners of an object instantiated on runtime in java swing
[英]How to Object pool for event Listeners in Java or JavaScript
我一直在閱讀有關對象池如何減少游戲垃圾收集的文章,尤其是對於不斷創建和銷毀關鍵事件的事件偵聽器。 他們提到對象池如何減少內存問題,但是代碼中沒有任何地方說明如何實際執行。
如何為JavaScript或Java中的事件提供對象池?
通常,對於對象池,您基本上需要維護自己的可用對象列表。 如果所有對象都是同一類型,則效果很好。 如果說您有一門Thing,您可能會有一個ThingPool
import java.util.ArrayDeque;
import java.util.Deque;
public class ThingPool {
public static class Thing {
}
// start with a big stack of objects
Deque<Thing> stack = new ArrayDeque<Thing>(1000);
/**
* Gets a new instance. If one exists in the stack use that,
* otherwise create a new one.
* @return
*/
public Thing getThing() {
if(stack.isEmpty())
return new Thing();
return stack.pop();
}
/**
* Does not actually delete it, just stores it for later use
* @param thing
*/
public void deleteThing(Thing thing) {
stack.push(thing);
}
/**
* You may need to clear your pool at some point
* if you have a great many objects in it
*/
public void clear() {
stack.clear();
}
}
當我用許多已知大小不同的矩陣做大量工作並且遇到堆碎片問題時,我在C中使用了此技術。
我沒有在Java中使用它,因為Java具有比C更好的內存管理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.