兼职做诚信网站认证,关键词优化seo优化,微课网站建设项目,小型培训机构管理系统我的代码基本上是免费分配的,但是当60fps时,GC每30秒运行一次.使用DDMS检查应用程序以进行分配显示有大量的SimpleListIterator被分配.还有一些东西被分配,因为我使用Exchanger.SimpleListIterator来自(T obj#xff1a;objs){}的每个循环.我的印象是编译器/翻译器会优化那些不…我的代码基本上是免费分配的,但是当60fps时,GC每30秒运行一次.使用DDMS检查应用程序以进行分配显示有大量的SimpleListIterator被分配.还有一些东西被分配,因为我使用Exchanger.SimpleListIterator来自(T objobjs){}的每个循环.我的印象是编译器/翻译器会优化那些不使用迭代器来支持它的类型(我基本上只使用ArrayList),但似乎并非如此.如何避免分配所有这些SimpleListIterators一种解决方案是切换到常规for循环(int i 0; i size; i){}但我喜欢每个循环:( 另一种方法是扩展ArrayList,它返回一个只分配一次的Iterator. 我一起攻击的第三种方法是使用静态辅助函数,它返回一个重用迭代器的Collection.我一起攻击了这样的东西,但铸件感觉非常黑暗和不安全.它应该是线程安全的,因为我使用ThreadLocal见下文public class FastIterator {private static ThreadLocal holders new ThreadLocal();public static Iterable get(ArrayList list) {Holder cont holders.get();if (cont null) {cont new Holder();cont.collection new DummyCollection();cont.it new Iterator();holders.set(cont);}Iterator it (Iterator) cont.it;DummyCollection collection (DummyCollection) cont.collection;it.setList(list);collection.setIterator(it);return collection;}private FastIterator() {}private static class Holder {public DummyCollection collection;public Iterator it;}private static class DummyCollection implements Iterable {private Iterator it;Overridepublic java.util.Iterator iterator() {return (java.util.Iterator) it;}public void setIterator(Iterator it) {this.it it;}}private static class Iterator implements java.util.Iterator {private ArrayList list;private int size;private int i;Overridepublic boolean hasNext() {return i size;}Overridepublic T next() {return list.get(i);}Overridepublic void remove() {}public void setList(ArrayList list) {this.list list;size list.size();i 0;}private Iterator() {}}}