ped*_*dja 6 java memory string allocation concatenation
有没有办法连接两个字符串(不是最终)而不分配内存?
例如,我有这两个字符串:
final String SCORE_TEXT = "SCORE: ";
String score = "1000"; //or int score = 1000;
Run Code Online (Sandbox Code Playgroud)
当我连接这两个字符串时,String会创建一个新对象.
font.drawMultiLine(batch, SCORE_TEXT + score, 50f, 670f);//this creates new string each time
Run Code Online (Sandbox Code Playgroud)
由于这是在主游戏循环中完成的(在一秒钟内执行约60次),因此有很多分配.
我可以不分配地以某种方式做到这一点吗
显而易见的解决方案是不在每一帧上重新创建输出String,而仅在其发生变化时重新创建输出。
一种方法是将其存储在主循环之外的某个位置,并在发生特定事件时更新它,即“分数”实际上发生了变化。然后,在主循环中,您只需使用预先创建的String.
如果您不能/或不想采用这种基于事件的方法,您可以始终存储“先前”分数,并且仅当先前分数与当前分数不同时才连接新字符串。
根据您的分数实际变化的频率,这应该会消除大部分重新分配。当然,除非分数以 60 fps 的速度变化,在这种情况下,整个点完全静音,因为没有人能够阅读您正在打印的文本。
| 归档时间: |
|
| 查看次数: |
448 次 |
| 最近记录: |