Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android触摸事件列表和垃圾收集器_Java_Android_Garbage Collection - Fatal编程技术网

Java Android触摸事件列表和垃圾收集器

Java Android触摸事件列表和垃圾收集器,java,android,garbage-collection,Java,Android,Garbage Collection,我的游戏因为GC而口吃,从40毫秒到140毫秒不等。 我的游戏没有在更新或渲染线程中创建新对象或任何东西,所以我很确定我的项目是干净的,除了一个。 在update方法中,我有一个列表touchEvents=getTouchEvents() 我很确定这就是导致GC启动的原因,因为每次我移动时它只会启动GC,因为它需要我触摸屏幕(使用ACTION_MOVE事件)。 我将如何优化或防止这种情况 编辑: 现在我开始认为这与我的FPS极限方法有关。 我假设,因为我限制FPS为30,GC没有足够的时间不干扰

我的游戏因为GC而口吃,从40毫秒到140毫秒不等。 我的游戏没有在更新或渲染线程中创建新对象或任何东西,所以我很确定我的项目是干净的,除了一个。 在update方法中,我有一个
列表touchEvents=getTouchEvents()
我很确定这就是导致GC启动的原因,因为每次我移动时它只会启动GC,因为它需要我触摸屏幕(使用ACTION_MOVE事件)。
我将如何优化或防止这种情况

编辑: 现在我开始认为这与我的FPS极限方法有关。 我假设,因为我限制FPS为30,GC没有足够的时间不干扰我的游戏。 我是在我把限制器取下来,以60帧的速度运行游戏后提出这个理论的。 游戏以60帧/秒的速度运行时非常流畅,但不是30帧/秒。
有什么想法吗?

就个人而言,我不建议限制fps。相反,让它尽可能快地运行,并在执行运动和物理操作时参考经过的时间。

您是否限制游戏逻辑线程,或渲染线程,或两者都限制?老实说,我不确定。我在网上查阅了如何限制FPS,并实现了一种在我尝试时有效的方法。基本上在新线程中,我创建睡眠时间并使用“if语句”检查睡眠时间是否大于33,如果大于33,则使用睡眠时间作为参数使线程睡眠。在if语句之后,我为当前屏幕调用update和render方法;游戏将以每秒30帧的速度进行。你有什么理由不希望它以更高的FPS运行吗?这听起来像是在限制两个线程,在这种情况下,渲染和游戏逻辑都将以30 FPS的速度更新。我建议游戏逻辑循环至少100 FPS,你应该让渲染循环尽可能快地运行(这基本上意味着60 FPS,因为Android的屏幕是V同步的)。我想我限制了这两个线程。我限制FPS的唯一原因是因为我确信FPS会随着我在游戏开发中的进步而降低。