我的代码基本上是免费分配的,但是当60fps时,GC每30秒运行一次.使用DDMS检查应用程序以进行分配显示有大量的SimpleListIterator被分配.还有一些东西被分配,因为我使用

Exchanger.

SimpleListIterator来自(T obj:objs){}的每个循环.我的印象是编译器/翻译器会优化那些不使用迭代器来支持它的类型(我基本上只使用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;

@Override

public 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;

@Override

public boolean hasNext() {

return i < size;

}

@Override

public T next() {

return list.get(i++);

}

@Override

public void remove() {

}

public void setList(ArrayList list) {

this.list = list;

size = list.size();

i = 0;

}

private Iterator() {}

}

}

java免费游戏,java – 分配免费游戏相关推荐

  1. java实现Flappy Bird游戏(附免费素材+代码+详细注解)

    目录 前言 一.实现效果 二.实现代码 前言 该小游戏我设计成BackGroundView类(背景图).Bird类.Pipe类,Main类四部分 图片素材地址:https://download.csd ...

  2. java毕业设计——基于java+J2ME+sqlserver的打飞机游戏设计与实现(毕业论文+程序源码)——打飞机游戏

    基于java+J2ME+sqlserver的打飞机游戏设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+J2ME+sqlserver的打飞机游戏设计与实现,文章末尾附有本毕业设计的 ...

  3. 微软 SQL Server 2019 将免费支持 Java;Rancher Labs获2500万美元融资;腾讯云进军日本市场……...

    关注并标星星CSDN云计算 极客头条:速递.最新.绝对有料.这里有企业新动.这里有业界要闻,打起十二分精神,紧跟fashion你可以的! 每周三次,打卡即read 更快.更全了解泛云圈精彩news g ...

  4. java实验2总结心得,打字小游戏JAVA实验总结及心得体会

    篇一:扫雷游戏实验报告 课程设计 班 级: 姓 名: 学 号: 指导教师: 成 绩: 电子与信息工程学院信息与通信工程系 目录 1.任务概述------------------------------ ...

  5. 对对碰java_Java开发学习之用Java打造一款对对碰游戏(下篇)

    本文主要向大家介绍了Java开发学习之用Java打造一款对对碰游戏,通过具体的内容向大家展现,希望对大家Java开发的学习有所帮助. 在之前的文章介绍了对对碰游戏的理论部分和介绍了JLabel.JBu ...

  6. FlipBird飞翔的小鸟游戏 java实现 课程设计

    java课程设计题,游戏界面采用swing图形界面,游戏运行时会有背景音乐. Bird类 import javax.imageio.ImageIO; import java.awt.image.Buf ...

  7. 猿创征文|JAVA 实现《俄罗斯方块升级版》游戏

    前言 俄罗斯方块是一款风靡全球,从一开始到现在都一直经久不衰的电脑.手机.掌上游戏机产品,是一款游戏规则简单,但又不缺乏乐趣的简单经典小游戏,上手容易,适用范围广泛,人所共知.俄罗斯方块游戏简单的基本 ...

  8. java,jdk 分不清,是否免费,怎么选择合适的版本

    Oracle JDK 和 Open JDK Oracle JDK Open JDK 来源 Oracle团队维护 Oracle和Open Java社区 授权协议 Java 17及更高版本 Oracle ...

  9. java毕业设计——基于java+Java awt+swing的愤怒的小鸟游戏设计与实现(毕业论文+程序源码)——愤怒的小鸟游戏

    基于java+Java awt+swing的愤怒的小鸟游戏设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+Java awt+swing的愤怒的小鸟游戏设计与实现,文章末尾附有本毕 ...

  10. 免费的java开发工具_Java那些最常用的免费开放工具,分享这15个!

    随着Java行业需求增加,Java工程师岗位薪资节节升高,很多小伙伴想要通过快速的方式掌握Java技能.对于初学Java的小伙伴来说了解一些免费的Java开发工具让我们工作.学习更顺畅,那么免费Jav ...

最新文章

  1. String SringBuffer StringBuilder区别
  2. mysql5.5设置字符编码
  3. 19课 Vue第二节
  4. java 九大行星运行_九大行星运行周期!
  5. 容器(Collection/Map)、容器中的设计模式
  6. opencv 直方图反向投影
  7. 计算机一级考试教学设计,《全国计算机一级考试》教学设计说明.doc
  8. 【Android开发】之Fragment与Acitvity通信
  9. 大数据学习笔记32:Hive - 下载、安装与配置
  10. c语言乘号字母,c语言中如何输入间接运算符和乘号,包括如何转换
  11. c++注释快捷键_是不是晚了点:Visual Studio可以自动生成注释啦!
  12. 蓝桥杯 ADV-156算法提高 分分钟的碎碎念(动态规划)
  13. Flink Batch SQL 1.10 实践
  14. gqview的安装与汉化
  15. 递归问题学习三之生成指定字符串的全排序
  16. 80套基于PHP+MYSQL 的毕设设计(系统+论文)
  17. 邮箱如何发邮件?邮箱怎么发邮件,掌握这几点,轻松搞定
  18. 应用程序初始化(0xc0000034)失败
  19. Web项目中前端页面引用外部Js和Css的路径问题
  20. iOS iPhone设备判断大全,包含X系列和11

热门文章

  1. Sublime Text 3 配置python交互运行环境的快捷键
  2. 蓝桥杯 出现次数最多的整数
  3. 多任务管理类 MutilTaskManager
  4. WorkerMan 入门学习之(二)基础教程-Connection类的使用
  5. php yii多表查询
  6. Ubuntu12环境下Thin+rails(4)+ruby(2)+nginx+mysql 配置
  7. malloc coredump(宕)的问题
  8. rsem比对_RSEM方法比对和表达量计算
  9. 培训时常犯的学习误区与应对方法
  10. 第一个Spark实例:求PI值