java免费游戏,java – 分配免费游戏

我的代码基本上是免费分配的,但是当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() {}

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/547641.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python字典键值对转化为相应的变量名和变量值

将python字典键值对转化为相应的变量名和变量值可以使用以下方法&#xff1a; globals().update({"name":"value"}) locals().update({"var":"val"}) 举例如下&#xff1a; >>> D{a:1,b:2,c:3} >>> globals().updat…

IE与IE内核浏览器的那点事

真正的IE浏览器与IE内核的浏览器是不是一回事呢&#xff0c;是不是完全一样咧&#xff1f;如果不一样又有什么关系咧&#xff1f;下面一起来找答案吧&#xff01; 知识补给&#xff1a; 1.浏览内核 简介 2.IE内核浏览器 简介 我的结论&#xff1a;根据以往的经验和上面资料可…

Python 代码优化常见技巧

代码优化能够让程序运行更快&#xff0c;它是在不改变程序运行结果的情况下使得程序的运行效率更高&#xff0c;根据 80/20 原则&#xff0c;实现程序的重构、优化、扩展以及文档相关的事情通常需要消耗 80% 的工作量。优化通常包含两方面的内容&#xff1a;减小代码的体积&…

adb shell——Android虚拟机调试必须知道的命令

2019独角兽企业重金招聘Python工程师标准>>> 之前开发Android的时候喜欢用自己的手机来调试&#xff0c;特别是数据库&#xff01;&#xff01;&#xff01;因为是自己的手机嘛&#xff0c;可以安装一些类似数据库编辑器的工具&#xff0c;调试起来非常方便&#xf…

mysql6.10,MySQL经典50题-第6-10题

MySQL50-4-第6-10题本文中介绍的是第6-10题&#xff0c;涉及到的主要知识点&#xff1a;模糊匹配和通配符使用表的自连接in/not in连接查询的条件筛选image题目6题目需求查询“李”姓老师的数量分析过程使用通配符和like来解决SQL实现select count(t_name) from Teacher where …

增加系统右键菜单

本文介绍添加系统右键菜单&#xff0c;效果如下图&#xff1a; 原理很简单就是给注册表添加值&#xff0c;以下是添加系统右键菜单所要涉及的值。 KEY值&#xff1a;HKEY_CLASSES_ROOT\*\shell&#xff08;所有文件的右键菜单&#xff09;HKEY_CLASSES_ROOT\directory\shell&am…

Nginx-ingress部署及使用

目录 一 手动部署-官网版 1.1 获取资源1.2 安装RBAC1.3 安装基础资源1.4 安装ingress controllers1.5 创建ingress controllers service二 手动部署-github社区版(推荐&#xff09; 2.1 获取资源2.2 创建default backend2.3 确认验证三 ingress使用 3.1 创建demo环境3.2 创建i…

转:数字对讲机常识介绍

一、国内外数字对讲机发展动态 从整个移动通信的应用来划分&#xff0c;通信网络可分为公众移动通信和专业移动通信两大类&#xff0c;其中公众移动通信就是社会上广大消费者正在使用的2G、3G移动手机&#xff0c;它是为广大公众提供移动通信服务的&#xff0c;任何人都有权购买…

mac 启动php70 fpm,mac 启动php-fpm

Mac OS X 10.9已经自带有php-fpm&#xff0c;对于有干净系统强迫症的人&#xff0c;或者原装控来说&#xff0c;用brewhome重装一遍总感觉心里会有小兔子&#xff0c;下面把原装的php-fpm配置起来。直接运行&#xff0c;有报错找不到配置文件。$ php-fpm[11-Jan-2014 16:03:03]…

WinRAR(WinZip)压缩与解压实现(C#版Window平台)

本文的原理是借助Windows平台安装的WinRAR(WinZip)实现C#程序的调用&#xff08;注&#xff1a;WinRAR压缩解压WinZip同样适用&#xff09;。 先来看WinRAR&#xff08;WinZip&#xff09;自身的支持调用命令&#xff1a; 压缩命令&#xff1a;a {0} {1} -r 【{0}&#xff1a;…

Docker Consul 安装及使用服务发现

更多配置和原理&#xff1a;https://blog.csdn.net/liuzhuchen/article/details/81913562 从2016年起就开始接触Consul&#xff0c;使用的主要目的就是做服务发现&#xff0c;后来逐步应用于生产环境&#xff0c;并总结了少许使用经验。最开始使用Consul的人不多&#xff0c;为…

Visual Studio扩展工具添加与卸载

简介&#xff1a;vs 作为主流的开发工具之一&#xff0c;其强大的功能无可厚非&#xff0c;但日益增加的需求就使得vs的扩展工具成为优秀dev所必备的利器之一。 Visual Studio扩展工具添加 Visual Studio扩展工具的添加很简单&#xff0c;只需要选择需要的扩展工具然后一般安装…

python代码风格检查工具──pylint

pylint是一个python代码检查工具&#xff0c;可以帮助python程序员方便地检查程序代码的语法和风格&#xff0c;通过这个工具&#xff0c;可以使你的python代码尽量保持完美&#xff0c;哈哈。具体可以检查什么东西呢&#xff1f;比如你写了 from XXX import * 了&#xff0c;它…

php充值注入,PHP注入一路小跑

PHP注入一路小跑[ 2006-04-20 14:16:55 | 作者: 承諾 ]字体大小: 大 | 中 | 小很老的了&#xff0c;我是给我自己看的。忘了好多&#xff0c;补习一下‘ or ‘11‘/*‘%23‘ and password‘mypassid-1 union select 1,1,1id-1 union select char(97),char(97),char(97)id1 unio…

Visual Studio 扩展包(.vsix)制作

前言&#xff1a;上篇介绍了 Visual Studio扩展工具添加与卸载&#xff0c;本编要介绍的是Visual Studio 扩展包(.vsix)的制作。 方法&#xff1a; ①、下载并安装Visual Studio 2010 SDK。 vs 2010 开发工具下载SDK安装包官方下载地址&#xff1a;http://www.microsoft.com/d…

php5..6中文帮助,6.5. IDE integration

IDE 集成理想情况下&#xff0c;应用程序代码不应直接使用DI容器&#xff1a;应首选依赖项注入。但是&#xff0c;在某些情况下&#xff0c;可能会直接调用容器&#xff1a;编写根应用程序类(前端控制器等)或更通用的框架时编写工厂时维护或迁移旧版应用程序时编写功能测试时..…

公主病 - 百度百科

http://wapbaike.baidu.com/view/287227.htm?ssid0&from844b&uid3151E6C0905477A13653132D762BB6FB&pusz%401320_1001%2Cta%40iphone_2_4.1_3_537%2Cusm%403&bd_page_type1&tjXk_1_0_10_title

CDH6.2 Linux离线安装

1.概述 CDH&#xff0c;全称Clouderas Distribution, including Apache Hadoop。是Hadoop众多分支中对应中的一种&#xff0c;由Cloudera维护&#xff0c;基于稳定版本的Apache Hadoop构建&#xff0c;提供了Hadoop的核心&#xff08;可扩展存储、分布式计算&#xff09;&#…

vs怎么调试php程序,vscode如何调试运行c#程序

前提条件&#xff1a;安装.NET Core SDK安装vscode步骤&#xff1a;安装c#extension插件创建第一个项目&#xff0c;手动创建workspace文件夹在vscode中使用快捷键CTRLKCTRLO选择刚才创建的文件夹使用快捷键CTRLSHIFITY打开控制台使用下面的命令在打开的终端里面创建一个基础的…

Openshift 4.4 静态 IP 离线安装系列:准备离线资源

本系列文章描述了离线环境下以 UPI (User Provisioned Infrastructure) 模式安装 Openshift Container Platform (OCP) 4.4.5 的步骤&#xff0c;我的环境是 VMware ESXI 虚拟化&#xff0c;也适用于其他方式提供的虚拟机或物理主机。离线资源包括安装镜像、所有样例 Image Str…