我不是问这个问题,因为垃圾收集的优点首先.我提出这个问题的主要原因是我知道Bjarne Stroustrup已经说过C++在某些时候会有一个垃圾收集器.
话虽如此,为什么还没有添加?已经有一些垃圾收集器用于C++.这只是那些"说起来容易做起来难"的事情吗?还是有其他原因没有添加(并且不会在C++ 11中添加)?
交叉链接:
为了澄清,我理解为什么C++在第一次创建时没有垃圾收集器的原因.我想知道为什么收藏家不能加入.
我正在使用Java平台为Android平台调整交互式游戏.偶尔会有绘图和交互进行垃圾收集的打嗝.通常它不到十分之一秒,但有时在非常慢的设备上可能会达到200毫秒.
我正在使用ddms profiler(Android SDK的一部分)来搜索我的内存分配来自哪里,并从我的内部绘图和逻辑循环中删除它们.
最糟糕的罪犯是短循环,如,
for(GameObject gob : interactiveObjects)
gob.onDraw(canvas);
Run Code Online (Sandbox Code Playgroud)
每次循环执行的地方都有iterator分配.我现在正在ArrayList为我的对象使用arrays().如果我想在内部循环中使用树或哈希,我知道我需要小心甚至重新实现它们而不是使用Java Collections框架,因为我无法负担额外的垃圾收集.当我在查看优先级队列时,可能会出现这种情况.
我也很难在哪里显示分数和进度Canvas.drawText.这是不好的,
canvas.drawText("Your score is: " + Score.points, x, y, paint);
Run Code Online (Sandbox Code Playgroud)
因为Strings,char数组StringBuffers将被分配到所有地方以使其工作.如果你有几个文本显示项目,并运行框架每秒60次开始加起来,将增加你的垃圾收集打嗝.我认为这里最好的选择是保持char[]数组并解码int或double手动解码并将字符串连接到开头和结尾.我想听听是否有更清洁的东西.
我知道必须有其他人来处理这件事.您如何处理它以及您发现在Java或Android上以交互方式运行的陷阱和最佳实践?这些gc问题足以让我错过手动内存管理,但不是很多.